aboutsummaryrefslogtreecommitdiffstats
path: root/examples/impure-concept.milch
diff options
context:
space:
mode:
Diffstat (limited to 'examples/impure-concept.milch')
-rw-r--r--examples/impure-concept.milch19
1 files changed, 16 insertions, 3 deletions
diff --git a/examples/impure-concept.milch b/examples/impure-concept.milch
index c767914..75c3bb7 100644
--- a/examples/impure-concept.milch
+++ b/examples/impure-concept.milch
@@ -5,8 +5,21 @@
; The top-level context is impure but has special rules
; related to `import`, `let`, and other builtins.
-; pure function
+; this is a pure function
(let f (\[x] x))
-; impure function
-(let g! (\![x] (print! 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 \ No newline at end of file