diff options
author | Greg Brown <greg.brown01@ed.ac.uk> | 2024-11-15 15:44:30 +0000 |
---|---|---|
committer | Greg Brown <greg.brown01@ed.ac.uk> | 2024-11-15 15:44:30 +0000 |
commit | 3caa95a139538bb07c74847ca3aba2603a03c502 (patch) | |
tree | afa588ecffb2efd05b1202c7ce5ae6005c86b8d2 /program | |
parent | 865dc549baf613e45e2f79036d54850a483fa509 (diff) |
Add compilation to scheme.
Extract parser as an independent project.
Diffstat (limited to 'program')
-rw-r--r-- | program/exp.prim | 3 | ||||
-rw-r--r-- | program/exp.pty | 1 |
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 |