summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp_lib.lem7
-rw-r--r--src/test/test3.sail6
2 files changed, 7 insertions, 6 deletions
diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem
index 192cd641..4873149e 100644
--- a/src/lem_interp/interp_lib.lem
+++ b/src/lem_interp/interp_lib.lem
@@ -1,8 +1,9 @@
-open import Interp ;;
+open import Interp
+open import Interp_ast
import Maybe_extra
+open import Num
-let add v = v ;;
-
+let add (V_tuple [V_lit(L_num x); V_lit(L_num y)]) = V_lit(L_num (x+y)) ;;
let function_map = [
("add", add);
diff --git a/src/test/test3.sail b/src/test/test3.sail
index 3127db28..8d0d9056 100644
--- a/src/test/test3.sail
+++ b/src/test/test3.sail
@@ -7,8 +7,8 @@ val ( nat -> nat effect { wmem , rmem } ) MEM_GPU
val ( ( nat * nat ) -> nat effect { wmem , rmem } ) MEM_SIZE
(* extern functions *)
-val extern ( nat -> nat pure ) add = "add"
-val extern ( nat -> nat pure ) (: + ) = "add_infix" (* infix plus *)
+val extern ( ( nat * nat ) -> nat pure ) add = "add"
+val extern ( ( nat * nat ) -> nat pure ) (: + ) = "add_infix" (* infix plus *)
function nat (: * ) ( < nat > x, < nat > y ) = 42
@@ -36,5 +36,5 @@ function nat main _ = {
(* extern calls *)
3 + 39;
- add(5);
+ add((5, 37));
}