| new : Unit -> EmptyBox; | |
| insert : [a]. {box : EmptyBox, item : a}# -> Box a; | |
| remove : [a]. Box a -> {box : EmptyBox, item : a}#; | |
| delete : EmptyBox -> Unit; | |
| test : [x]. x -> x; | |
| test x | |
| = let boxbox = new Unit | |
| in let box = new Unit | |
| in let full = insert { box = box, item = x } | |
| in let fullbox = insert { box = boxbox, item = full } | |
| in take r { box = b } = remove fullbox | |
| in take r { item = i } = r | |
| in let u = delete b | |
| in take r { box = b} = remove i | |
| in let u = delete b | |
| in take r { item = ret } = r | |
| in ret | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end; | |