about summary refs log tree commit diff stats
path: root/archive/1.vm/continuation1.mu
diff options
context:
space:
mode:
Diffstat (limited to 'archive/1.vm/continuation1.mu')
-rw-r--r--archive/1.vm/continuation1.mu25
1 files changed, 25 insertions, 0 deletions
diff --git a/archive/1.vm/continuation1.mu b/archive/1.vm/continuation1.mu
new file mode 100644
index 00000000..8276e188
--- /dev/null
+++ b/archive/1.vm/continuation1.mu
@@ -0,0 +1,25 @@
+# Example program showing that 'return-continuation-until-mark' can 'pause' a
+# function call, returning a continuation, and that calling the continuation
+# can 'resume' the paused function call.
+#
+# To run:
+#   $ git clone https://github.com/akkartik/mu
+#   $ cd mu
+#   $ ./mu continuation1.mu
+#
+# Expected output:
+#   1
+
+def main [
+  local-scope
+  k:continuation <- call-with-continuation-mark 100/mark, create-yielder
+  x:num <- call k  # should return 1
+  $print x 10/newline
+]
+
+def create-yielder -> n:num [
+  local-scope
+  load-inputs
+  return-continuation-until-mark 100/mark
+  return 1
+]