diff options
Diffstat (limited to 'src/lem_interp/interp_inter_imp.lem')
| -rw-r--r-- | src/lem_interp/interp_inter_imp.lem | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/lem_interp/interp_inter_imp.lem b/src/lem_interp/interp_inter_imp.lem index 6afe388e..bc6d4361 100644 --- a/src/lem_interp/interp_inter_imp.lem +++ b/src/lem_interp/interp_inter_imp.lem @@ -266,13 +266,16 @@ let decode_to_istate top_level value = | (Nothing, Just err) -> Decode_error err end -let instruction_to_istate ((name, parms, _) as instr) = () -(* let get_value (name,typ,v) = v in - Instr instr +let instruction_to_istate top_level ((name, parms, _) as instr) = + let mode = make_mode true false in + let get_value (name,typ,v) = let (e,_) = Interp.to_exp mode Interp.eenv (intern_value v) in e in + (Instr instr (Interp.Thunk_frame - (E_aux (E_app (Id_aux (Id "execute") Interp_ast.Unknown)*) - - + (E_aux (E_app (Id_aux (Id "execute") Interp_ast.Unknown) + [(E_aux (E_app (Id_aux (Id name) Interp_ast.Unknown) (List.map get_value parms)) + (Interp_ast.Unknown,Interp.ctor_annot (T_id "ast")) (*This type shouldn't be hard-coded*))]) + (Interp_ast.Unknown,Nothing)) + top_level Interp.eenv Interp.emem Interp.Top)) let rec interp_to_outcome mode thunk = match thunk () with |
