summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorGreg Brown <greg.brown01@ed.ac.uk>2024-11-15 15:44:30 +0000
committerGreg Brown <greg.brown01@ed.ac.uk>2024-11-15 15:44:30 +0000
commit3caa95a139538bb07c74847ca3aba2603a03c502 (patch)
treeafa588ecffb2efd05b1202c7ce5ae6005c86b8d2 /program
parent865dc549baf613e45e2f79036d54850a483fa509 (diff)
Add compilation to scheme.
Extract parser as an independent project.
Diffstat (limited to 'program')
-rw-r--r--program/exp.prim3
-rw-r--r--program/exp.pty1
2 files changed, 4 insertions, 0 deletions
diff --git a/program/exp.prim b/program/exp.prim
new file mode 100644
index 0000000..3c07ec1
--- /dev/null
+++ b/program/exp.prim
@@ -0,0 +1,3 @@
+let add (x : Nat) (y : Nat) : Nat = foldcase x by {Z u => y; S k => ~(S k)} in
+let mul (x : Nat) (y : Nat) : Nat = foldcase x by {Z u => 0; S k => add y k} in
+\x, y => foldcase y by {Z u => 1; S k => mul x k}
diff --git a/program/exp.pty b/program/exp.pty
new file mode 100644
index 0000000..9e7f5e3
--- /dev/null
+++ b/program/exp.pty
@@ -0,0 +1 @@
+Nat -> Nat -> Nat