I am curious what you mean about "easily manipulate environments" for the functions to be evaluated in.
back
1 comments
Probably, something similar to JavaScript's call() and apply() is meant here.
Though classical Lisps all have funcall and apply (not sure about Arc).
call and apply only let you change the meaning of the this pointer in Javascript. You can't change the meaning of other bound variables. In Io, you can take a Block and set the scope:
makeOriginalScope := block(name := "originalScope"; block(writeln(name)))
block(name := "newScope"; makeOriginalScope call setScope(thisContext) call) call
//newScope