From d7e3a2e798fbc77f74a59593fff874f0198b5864 Mon Sep 17 00:00:00 2001 From: Gabriel Kerneis Date: Tue, 5 Nov 2013 16:46:18 +0000 Subject: De-infix operator before looking it up in the interpreter --- src/lem_interp/interp.lem | 4 ++++ src/test/test3.sail | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem index aeb846d9..08943dc8 100644 --- a/src/lem_interp/interp.lem +++ b/src/lem_interp/interp.lem @@ -674,6 +674,10 @@ and interp_main t_level l_env l_mem exp = | _ -> (Error "Application with expression other than identifier",l_mem,l_env) end | E_app_infix l op r -> + let op = match op with + | Id x -> DeIid x + | DeIid _ -> op + end in resolve_outcome (interp_main t_level l_env l_mem l) (fun lv lm le -> resolve_outcome (interp_main t_level l_env lm r) diff --git a/src/test/test3.sail b/src/test/test3.sail index 60f32469..3127db28 100644 --- a/src/test/test3.sail +++ b/src/test/test3.sail @@ -8,7 +8,7 @@ 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 plus *) +val extern ( nat -> nat pure ) (: + ) = "add_infix" (* infix plus *) function nat (: * ) ( < nat > x, < nat > y ) = 42 -- cgit v1.2.3