equal
deleted
inserted
replaced
347 |
347 |
348 abbreviation "MREC == mrec.MREC" |
348 abbreviation "MREC == mrec.MREC" |
349 lemmas MREC_rule = mrec.MREC_rule |
349 lemmas MREC_rule = mrec.MREC_rule |
350 lemmas MREC_pinduct = mrec.MREC_pinduct |
350 lemmas MREC_pinduct = mrec.MREC_pinduct |
351 |
351 |
352 hide_const (open) heap execute |
|
353 |
|
354 |
352 |
355 subsection {* Code generator setup *} |
353 subsection {* Code generator setup *} |
356 |
354 |
357 subsubsection {* Logical intermediate layer *} |
355 subsubsection {* Logical intermediate layer *} |
358 |
356 |
362 lemma raise_raise' [code_inline]: |
360 lemma raise_raise' [code_inline]: |
363 "raise s = raise' (STR s)" |
361 "raise s = raise' (STR s)" |
364 by simp |
362 by simp |
365 |
363 |
366 code_datatype raise' -- {* avoid @{const "Heap"} formally *} |
364 code_datatype raise' -- {* avoid @{const "Heap"} formally *} |
367 |
|
368 hide_const (open) raise' |
|
369 |
365 |
370 |
366 |
371 subsubsection {* SML and OCaml *} |
367 subsubsection {* SML and OCaml *} |
372 |
368 |
373 code_type Heap (SML "unit/ ->/ _") |
369 code_type Heap (SML "unit/ ->/ _") |
491 code_type Heap (Haskell "Heap.ST/ Heap.RealWorld/ _") |
487 code_type Heap (Haskell "Heap.ST/ Heap.RealWorld/ _") |
492 code_monad "op \<guillemotright>=" Haskell |
488 code_monad "op \<guillemotright>=" Haskell |
493 code_const return (Haskell "return") |
489 code_const return (Haskell "return") |
494 code_const Heap_Monad.raise' (Haskell "error/ _") |
490 code_const Heap_Monad.raise' (Haskell "error/ _") |
495 |
491 |
|
492 hide_const (open) Heap heap execute raise' |
|
493 |
496 end |
494 end |