On Sun, May 13, 2012 at 1:01 AM, Jay McCarthy <[email protected]> wrote: > primitive? is only defined on values. > > thunk, let, lambda, etc are not values. > > They are syntactic forms and thus, for example, the expression > > (primitive? let) > > represents an ill-formed let expression (indeed, so does 'let')
Another way to say this is: primitive? is a function, and like all functions, it can be applied only after its argument's value has been computed. But if we try to do something like this: (define v let) in an attempt to see what the value of 'let' is, then we'll find that we can't even get a value from evaluating the raw "let". So we run into the problem even before truly calling into "primitive?". Racket doesn't currently have rules for getting a value from a raw use of "let", "lambda", or "thunk": using these raw should raise a compile-time syntax error. ____________________ Racket Users list: http://lists.racket-lang.org/users

