| init : Unit -> Buf; | |
| read : Buf! -> U8; | |
| free : Buf -> Unit; | |
| test : Unit -> U8; | |
| test u = | |
| let buf = init u | |
| in let! (buf) x = read buf | |
| in let u2 = free buf | |
| in x | |
| end | |
| end | |
| end; | |
| noDrop : Unit -> U8; | |
| noDrop u = | |
| let buf = init u | |
| in let! (buf) x = read buf | |
| in x | |
| end | |
| end; | |
| noShare : Unit -> U8; | |
| noShare u = read (init u); | |
| noEscape : Unit -> Unit; | |
| noEscape u = | |
| let buf = init u | |
| in let! (buf) x = buf | |
| in free buf | |
| end | |
| end; |