From 4002b8988c799a904ef1f359d4267ef4ad80cba3 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Mon, 5 Dec 2022 14:19:12 +0200 Subject: Rename project to Milch --- examples/purity-test.milch | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 examples/purity-test.milch (limited to 'examples/purity-test.milch') diff --git a/examples/purity-test.milch b/examples/purity-test.milch new file mode 100644 index 0000000..6e8faea --- /dev/null +++ b/examples/purity-test.milch @@ -0,0 +1,25 @@ +; utils + +(let! println! (\![x] + (print! (fmt "{0}\n" [x])))) + +; pure vs. impure demo + +; this is a pure function +(let! f (\[x] x)) + +(f 10) ; works + +; this is an impure function +(let! g! (\![x] (println! x))) + +(g! "foo") ; works + +; this is a pure function that tries to call an impure function +(let! h (\[x] (g! x))) + +(h "bar") +; error: cannot call impure function in pure context +; when calling function g! at examples/purity-test.milch:19:15 +; in a function definition at examples/purity-test.milch:19:12 +; when calling function h at examples/purity-test.milch:21:1 -- cgit v1.3