[racket] Is this a bug in procedure 'primitive?' ?

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Sun May 13 01:01:33 EDT 2012

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


Posted on the users mailing list.