Well, MzScheme's eval lets you pass in a namespace. Now a namespace is not a lexical environment. It's simply a collection of names and values. Arc uses one MzScheme namespace for its top-level environment. It would be pretty easy for you to create your own namespace and eval Arc expressions in that namespace, so that they'd see a different "top-level" environment than the main program does. However that's not going to give you access to lexical variables.