There are some issues with converting procedures to strings. Procedures that are closures can contain references to the environment. Then if you put an (eval) in there that makes it impossible without carrying around the entire lexical environment in the string of the procedure.