(let ((x 5)) (let ((p (open-input-string "(lambda () x)"))) (let ((f (read p))) ((eval f))))) I guess my question is how do get a reference to my current dynamic environment to pass as a second parameter to eval?