list_reverse(x, y;) [list(x)] { local z; y = NULL; while (x != NULL) [list(x) * list(y)] { z = x->tl; x->tl = y; y = x; x = z; } } [list(y)]