From 7f076e6ca1a107b6b0ce54784e9b9eb2ae715771 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 11 Jan 2015 17:55:14 -0400 Subject: - Added integer remainder. - Now, can handle boolean returns from methods. - Static functions now define a "_datum" field containing an empty instance. - Fixed a bug when analysing lambdas that made their arguments get treated like they were closure variables. --- test2.lux | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) (limited to 'test2.lux') diff --git a/test2.lux b/test2.lux index 19054e699..9cea62d8a 100644 --- a/test2.lux +++ b/test2.lux @@ -67,6 +67,10 @@ [java.lang.Object _5] [java.lang.Object _6] [java.lang.Object _7] [java.lang.Object _8]]) +(def (println x) + (jvm/invokevirtual java.io.PrintStream "println" [Object] + (jvm/getstatic System out) [x])) + (def (++ xs ys) (case xs #Nil @@ -139,22 +143,26 @@ (def inc (+ 1)) -#( (def (fold f init values) - (case values - #Nil - init - (#Cons x xs) - (fold f (f init x) xs))) +(def (id x) + x) - (def length (fold inc 0)) +(def (fold f init values) + (case values + #Nil + init + (#Cons x xs) + (fold f (f init x) xs))) - (def (mod dividend divisor) - (jvm/imod dividend divisor)) +(def length (fold (lambda [l x] (inc l)) 0)) - (def (= x y) - (.equals x y)) +(def (rem dividend divisor) + (jvm/irem dividend divisor)) - (def (as-pairs list) +(def (= x y) + (jvm/invokevirtual Object "equals" [Object] + x [y])) + +#( (def (as-pairs list) (case list (#Cons x (#Cons y list*)) (#Cons [x y] (as-pairs list*)) @@ -175,10 +183,6 @@ (as-pairs steps)) (#Text "Oh no!")))) )# -(def (println x) - (jvm/invokevirtual java.io.PrintStream "println" [Object] - (jvm/getstatic System out) [x])) - ## Program (def (main args) (case (' ((~ "Oh yeah..."))) @@ -188,7 +192,16 @@ (println (inc 10)) (println (jvm/i- 10 20)) (println (jvm/i* 10 20)) - (println (jvm/i/ 10 2))) + (println (jvm/i/ 10 2)) + (let list (#Cons 1 (#Cons 2 (#Cons 3 (#Cons 4 (#Cons 5 (#Cons 6 #Nil)))))) + (do (println (fold + 0 list)) + (println (length list)))) + (println (rem 21 6)) + (println (rem 21 7)) + (println (= false false)) + (println (= false true)) + (println (= true false)) + (println (= true true))) )) #( (def (main args) -- cgit v1.2.3