| author | wenzelm | 
| Sun, 29 Jul 2007 14:29:57 +0200 | |
| changeset 24041 | d5845b7c1a24 | 
| parent 23850 | f1434532a562 | 
| child 24421 | acfb2413faa3 | 
| permissions | -rw-r--r-- | 
| 22308 | 1 | module Nat = | 
| 2 | struct | |
| 3 | ||
| 4 | type nat = Zero_nat | Suc of nat;; | |
| 5 | ||
| 6 | end;; (*struct Nat*) | |
| 7 | ||
| 8 | module Codegen = | |
| 9 | struct | |
| 10 | ||
| 11 | type 'a null = {null : 'a};;
 | |
| 12 | let null _A = _A.null;; | |
| 13 | ||
| 22798 | 14 | let rec head _B = function x :: xs -> x | 
| 15 | | [] -> null _B;; | |
| 22308 | 16 | |
| 17 | let rec null_option = None;; | |
| 18 | ||
| 19 | let null_optiona () = ({null = null_option} : ('b option) null);;
 | |
| 20 | ||
| 21 | let rec dummy | |
| 22 | = head (null_optiona ()) [Some (Nat.Suc Nat.Zero_nat); None];; | |
| 23 | ||
| 24 | end;; (*struct Codegen*) |