| genTree : Unit -> rec t { f: < Leaf Unit | Node { left: t, right: t, data: U64 }# > }; |
| |
| deallocList: rec t { l: < Nil Unit | Cons { data: U64, rest: t }# > } -> Unit; |
| |
| incompatible : rec t { l: < Nil Unit | Cons { data: U64, rest: t }# > } |
| -> rec t { l: < Nil Unit | Cons { data: U64, rest: t }# > }; |
| incompatible list = |
| take emptyList { l = node } = list in |
| case node of |
| Nil u -> put emptyList.l := Nil u end |
| | node2 -> |
| case node2 of |
| Cons r -> |
| take r2 { rest = restOfList } = r in |
| let drop = deallocList restOfList in |
| put emptyList.l := |
| Cons { |
| data = 0, |
| rest = genTree Unit |
| } end |
| end |
| end |
| end |
| end |
| end; |