[racket] Is this a bug in procedure 'primitive?' ?
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')
because the syntax of let must always be:
(let ([id expr] ...) body ...)
That's why when you write
(primitive? let)
it says
let: bad syntax in: let
The first 'let' is the name of the place the error is thrown.
The second 'let' is the entire erroneous expression, in this case, the
whole let expression.
You'll see the same error for:
(+ let let)
(procedure? let)
etc.
Jay
On Sat, May 12, 2012 at 10:20 PM, Harry Spier <vasishtha.spier at gmail.com> wrote:
> When I try primitive? I get the following results:
>
>> (primitive? +)
> #t
>> (primitive? (thunk +))
> #f
>> (primitive? cons)
> #t
>> (primitive? values)
> #t
>> (primitive? thunk)
> . thunk: bad syntax in: thunk
>> (primitive? let)
> . let: bad syntax in: let
>> (primitive? lambda)
> . lambda: bad syntax in: lambda
>> (primitive? +)
> #t
>> (primitive? cons)
> #t
>> (primitive? let)
> let: bad syntax in: let
>> (primitive? thunk)
> . thunk: bad syntax in: thunk
>> (primitive? (thunk (+ 1 2)))
> #f
>
> Where I get the "bad syntax " error messages instead of #f is this a
> bug or is this the desired behavior?
>
> Thanks,
> Harry
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users
--
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay
"The glory of God is Intelligence" - D&C 93