diff options
| author | Gabriel Kerneis | 2013-11-05 16:46:18 +0000 |
|---|---|---|
| committer | Gabriel Kerneis | 2013-11-05 16:46:18 +0000 |
| commit | d7e3a2e798fbc77f74a59593fff874f0198b5864 (patch) | |
| tree | 5a6888193c36e3e0c14531fd141df7cfe9e21d24 /src | |
| parent | 097b5eff41ff77f5ef54d937a9e1ac8bc46ccbc6 (diff) | |
De-infix operator before looking it up in the interpreter
Diffstat (limited to 'src')
| -rw-r--r-- | src/lem_interp/interp.lem | 4 | ||||
| -rw-r--r-- | src/test/test3.sail | 2 |
2 files changed, 5 insertions, 1 deletions
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 |
