I am curious what you mean about "easily manipulate environments" for the functions to be evaluated in.
Though classical Lisps all have funcall and apply (not sure about Arc).
makeOriginalScope := block(name := "originalScope"; block(writeln(name)))
block(name := "newScope"; makeOriginalScope call setScope(thisContext) call) call
//newScope