From 5a72125d1f9290d7f92a2075c46d4c023d908740 Mon Sep 17 00:00:00 2001 From: Scott Richmond Date: Wed, 18 May 2022 20:30:27 -0400 Subject: [PATCH] Testing/playing --- src/ludus/interpreter.clj | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/ludus/interpreter.clj b/src/ludus/interpreter.clj index b5d13ae..ea74753 100644 --- a/src/ludus/interpreter.clj +++ b/src/ludus/interpreter.clj @@ -401,17 +401,37 @@ (println (ex-message e)) (pp/pprint (ex-data e))))) -(do +(comment (def source " - let foo = { - let x = :f00 - - fn foo () -> x + fn swap! (rf, f) -> { + let val = deref (rf) + let new = f (val) + set! (rf, new) } - foo () + let counter = { + ref i = 0 + + fn next () -> { + let n = deref (i) + if eq (n, 3) + then (:done, nil) + else { + swap! (i, inc) + (:value, n) + } + } + + @{next} + } + + print (counter :next ()) + print (counter :next ()) + print (counter :next ()) + print (counter :next ()) + print (counter :next ()) ")