> fn %local var wrapped-list cmd { > let (old=$$var) > unwind-protect { > $var = <={$wrapped-list} > $cmd > }{$var = $old}} > > (Whose let is of course rewritable as a lambda...) Funny, I don't > even see a problem with name space collisions! what happens if the variable you're rebinding is named old, var, wrapped-list, or cmd? that's the name space collision i was talking about. paul