tl; resource mm (f) [list(f)] { f = NULL; } alloc(x;) { with mm when(true) { if(f==NULL) x = new(); else { x = f; f = x->tl; }} } [x|->] dealloc(y) [y|->] { with mm when(true) { y->tl = f; f = y; } } proc(;y) { local x; alloc(x;); x->tl = y; dealloc(x); } main() { proc(42) || proc(13); }