open lock val hide [a, b, s : perm] ( f : (consumes a | s) -> b | consumes s ) : (consumes a) -> b = let l : lock s = new () in fun (consumes x : a) : b = acquire l; let y = f x in release l; y (* Local Variables: compile-command: "mezzo hide.mz" End: *)