From 90e35a2d13c78c8d7a3db3020bf6a66a5fe04604 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Fri, 16 Jan 2015 11:26:17 -0400 Subject: [Bugs] - Not all outside vars needed by lambdas were actually captured. - Needed vars weren't always captured in the right order. - The names of global-var classes weren't being generated properly to account for symbols/punctuation. [Enhancements] - The system now uses a brand-new ClassLoader on every run to speed-up development. --- test2.lux | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'test2.lux') diff --git a/test2.lux b/test2.lux index d24c9d10b..e5e3ad6da 100644 --- a/test2.lux +++ b/test2.lux @@ -150,7 +150,7 @@ (#Failure message)) (def (return* state value) - (#Ok state value)) + (#Ok [state value])) (def (fail message) (lambda [state] @@ -158,13 +158,13 @@ (def (return value) (lambda [state] - (#Ok state value))) + (#Ok [state value]))) (def (bind m-value step) (lambda [state] (let inputs (m-value state) (case inputs - (#Ok ?state ?datum) + (#Ok [?state ?datum]) (step ?datum ?state) _ @@ -294,6 +294,19 @@ (do (print "[") (print idx) (print ":") (print x) (print "]") (print " ") (print-enum enum')))) +(def get-state + (lambda [state] + (#Ok [state state]))) + +(def monadic-dup + (exec [foo get-state + bar get-state + baz (return 1000)] + (return (+ (+ foo bar) baz)))) + +(def (run-state monad state) + (monad state)) + ## Program (def (main args) (case (' ((~ "Oh yeah..."))) @@ -313,7 +326,14 @@ (println (= false true)) (println (= true false)) (println (= true true)) - (print-enum (enumerate (list #"a" #"b" #"c" #"d" #"e")))) + (case (run-state monadic-dup 123) + (#Ok [_ ?value]) + (println ?value) + + (#Failure ?message) + (println ?message)) + (print-enum (enumerate (list #"a" #"b" #"c" #"d" #"e"))) + ) )) #( (def (main args) -- cgit v1.2.3