[plt-scheme] primitive vs. procedure in 3.99

From: Mark Engelberg (mark.engelberg at gmail.com)
Date: Wed Jun 4 04:09:24 EDT 2008

I'm referring to this behavior:
> +
#<procedure:+>

as opposed to something like
#<primitive:+>

On Tue, Jun 3, 2008 at 11:55 PM, Jos Koot <jos.koot at telefonica.net> wrote:
> I see no problem:
>
> Welcome to DrScheme, version 3.99.0.26-svn3jun2008 [3m].
> Language: Module custom.
>>
>> (primitive? +)
>
> #t
>>
>> (procedure? +)
>
> #t
>>
>> (procedure? (lambda () '()))
>
> #t
>>
>> (primitive? (lambda () '()))
>
> #f
>>
>
> All primitive procedures are procedures, of course.
> Jos
> ----- Original Message ----- From: "Mark Engelberg"
> <mark.engelberg at gmail.com>
> To: "pltscheme" <plt-scheme at list.cs.brown.edu>
> Sent: Wednesday, June 04, 2008 7:37 AM
> Subject: [plt-scheme] primitive vs. procedure in 3.99
>
>
>> Is this a bug?
>>
>> In 3.72, some things were categorized as primitives, and some were
>> categorized as procedures.  For example, + is a primitive, and is
>> reported as such by the REPL.  On the other hand, (lambda (x) x) is a
>> procedure.
>>
>> The distinction matters, because some functions, such as
>> primitive-result-arity only work on primitives.
>>
>> However, in 3.99, all primitives are reported as procedures by the
>> REPL.  They are still internally classified as primitives, so they
>> work with primitive-result-arity, but there is no easy way to find out
>> from the REPL whether they are primitives or procedures.
>>
>> --Mark
>> _________________________________________________
>>  For list-related administrative tasks:
>>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>


Posted on the users mailing list.