| 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; |
| |