| allocNode : [a]. Unit -> rec t { l: < Nil Unit | Cons { data: a, rest: t }# > take }; | |
| push : [a]. { data: a, list: rec t { l: < Nil Unit | Cons { data: a, rest: t }# > } }# | |
| -> rec t { l: < Nil Unit | Cons { data: a, rest: t }# >}; | |
| push r = | |
| let node = allocNode Unit in | |
| take r2 { data = x } = r in | |
| take r3 { list = y } = r2 in | |
| put node.l := Cons { data = x, rest = y } end | |
| end | |
| end | |
| end; |