aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarvin Borner2025-03-06 15:55:13 +0100
committerMarvin Borner2025-03-06 15:55:13 +0100
commit5dcf423d97ee6dbb4adf8f18094b4a0c99772f3a (patch)
tree8c68a76db3ed1061d98a742fd373540bd98e06a3
parent78e6b29cb7d95c2ef5984a98a4028406b0977f57 (diff)
Add state demoHEADmain
-rw-r--r--samples/fun/deepthought_state.bruijn18
1 files changed, 18 insertions, 0 deletions
diff --git a/samples/fun/deepthought_state.bruijn b/samples/fun/deepthought_state.bruijn
new file mode 100644
index 0000000..5f5cb36
--- /dev/null
+++ b/samples/fun/deepthought_state.bruijn
@@ -0,0 +1,18 @@
+# state monad example: logger/writer
+
+:import std/Combinator .
+:import std/List .
+:import std/Number .
+:import std/Monad/State .
+
+log [[[[0 (1 ++ 2) 3]]]]
+
+deepthought answer >>= [correct >>= [check >>= [return]]]
+ answer log (+42) "Finding answer... "
+ correct log (0 =? (+42)) "Checking answer... "
+ check 0 (log [[0]] "Is correct!") (log [[0]] "Is false!")
+ return pure 2
+
+:test (deepthought [[0]]) ([0 (+42) "Finding answer... Checking answer... Is correct!"])
+
+main [deepthought [[0]] [[0]]]