let mk_memory_ltype = function
(* TODO loading a logical var from memory seems strange *)
  | Linteger -> mk_memory_type_var "Mint"
  | Lreal -> mk_memory_type_var "Mfloat"
  | Ctype t -> mk_memory_ctype t
  | Ltype _ -> abort "unsupported memory type"
  | Lvar _ -> abort "unsupported memory type"
  | Larrow _ -> abort "unsupported memory type"