290 |
290 |
291 subsubsection {* SML and OCaml *} |
291 subsubsection {* SML and OCaml *} |
292 |
292 |
293 code_type Heap (SML "unit/ ->/ _") |
293 code_type Heap (SML "unit/ ->/ _") |
294 code_const Heap (SML "raise/ (Fail/ \"bare Heap\")") |
294 code_const Heap (SML "raise/ (Fail/ \"bare Heap\")") |
295 code_const "op \<guillemotright>=" (SML "!(fn/ f/ =>/ fn/ g/ =>/ fn/ ()/ =>/ g/ (f/ ())/ ())") |
295 code_const "op \<guillemotright>=" (SML "!(fn/ f'_/ =>/ fn/ ()/ =>/ f'_/ (_/ ())/ ())") |
296 code_const run (SML "_") |
296 code_const run (SML "_") |
297 code_const return (SML "!(fn/ ()/ =>/ _)") |
297 code_const return (SML "!(fn/ ()/ =>/ _)") |
298 code_const "Heap_Monad.Fail" (SML "Fail") |
298 code_const "Heap_Monad.Fail" (SML "Fail") |
299 code_const "Heap_Monad.raise_exc" (SML "!(fn/ ()/ =>/ raise/ _)") |
299 code_const "Heap_Monad.raise_exc" (SML "!(fn/ ()/ =>/ raise/ _)") |
300 |
300 |
301 code_type Heap (OCaml "_") |
301 code_type Heap (OCaml "_") |
302 code_const Heap (OCaml "failwith/ \"bare Heap\"") |
302 code_const Heap (OCaml "failwith/ \"bare Heap\"") |
303 code_const "op \<guillemotright>=" (OCaml "!(fun/ f/ g/ ()/ ->/ g/ (f/ ())/ ())") |
303 code_const "op \<guillemotright>=" (OCaml "!(fun/ f'_/ ()/ ->/ f'_/ (_/ ())/ ())") |
304 code_const run (OCaml "_") |
304 code_const run (OCaml "_") |
305 code_const return (OCaml "!(fun/ ()/ ->/ _)") |
305 code_const return (OCaml "!(fun/ ()/ ->/ _)") |
306 code_const "Heap_Monad.Fail" (OCaml "Failure") |
306 code_const "Heap_Monad.Fail" (OCaml "Failure") |
307 code_const "Heap_Monad.raise_exc" (OCaml "!(fun/ ()/ ->/ raise/ _)") |
307 code_const "Heap_Monad.raise_exc" (OCaml "!(fun/ ()/ ->/ raise/ _)") |
308 |
308 |