On Tue, Sep 13, 2011 at 8:03 AM, Noel Welsh <noelwe...@gmail.com> wrote: > That is not one expression, but several. Wrap it in a (begin ...) and > it should work. I.e.
Yikes! Don't continue to encourage him to use process here. At the very least, even the raw use of eval is probably safer than what's being proposed. Trying to get the shell escapes right is a losing proposition. Rodolfo called it not the most "safe or beautiful". I'd say that warning more strongly: it's absolutely unsafe to do it this way. For example: ;;;;;;;;;;;;;;;;;;;;;;;;; #lang racket (define (do-it thing) (process (format "racket -e \"~a\"" thing))) (port->string (fourth (do-it "$HOME"))) ;;;;;;;;;;;;;;;;;;;;;;;;; When I run this on my home machine, I see: "reference to undefined identifier: /home/dyoo\n" which shows that the quoting and unquoting from my shell is coming into effect here, before Racket gets a handle. Which means stuff like: (port->string (fourth (do-it "`yes`"))) will cause infinite loops, because my shell allows for backquote evaluation. You can imagine all sorts of other silliness there, and not of the benign kind. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users