about summary refs log tree commit diff stats
path: root/archive/1.vm/static-dispatch.mu
diff options
context:
space:
mode:
Diffstat (limited to 'archive/1.vm/static-dispatch.mu')
-rw-r--r--archive/1.vm/static-dispatch.mu29
1 files changed, 29 insertions, 0 deletions
diff --git a/archive/1.vm/static-dispatch.mu b/archive/1.vm/static-dispatch.mu
new file mode 100644
index 00000000..a0157d13
--- /dev/null
+++ b/archive/1.vm/static-dispatch.mu
@@ -0,0 +1,29 @@
+# Example program showing how multiple functions with the same name can
+# coexist, and how we select between them.
+#
+# Expected output:
+#   4
+#   7
+#   7
+
+def test a:num -> b:num [
+  local-scope
+  load-inputs
+  b <- add a, 1
+]
+
+def test a:num, b:num -> c:num [
+  local-scope
+  load-inputs
+  c <- add a, b
+]
+
+def main [
+  local-scope
+  a:num <- test 3  # selects single-input version
+  $print a, 10/newline
+  b:num <- test 3, 4  # selects double-input version
+  $print b, 10/newline
+  c:num <- test 3, 4, 5  # prefers double- to single-input version
+  $print c, 10/newline
+]