[plt-scheme] Self evaluating "objects"
Why bother about eval? Nevertheless:
From: http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-17.html#node_idx_1266
QUOTE
(eval expression environment) procedure
Evaluates expression in the specified environment and returns its value. Expression must be a syntactically valid Scheme expression represented as a datum value, and environment must be an environment, which can be created using the environment procedure described below.
If the first argument to eval is determined not to be a syntactically correct expression, then eval must raise an exception with condition type &syntax. Specifically, if the first argument to eval is a definition or a splicing begin form containing a definition, it must raise an exception with condition type &syntax.
UNQUOTE
See also: http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-4.html#node_idx_52
In #lang scheme and mzscheme and pretty-big the value of a procedure is that procedure. There is #!r6rs though, but:
#!r6rs
(library (aap)
(export)
(import (rnrs eval (6)) (rnrs base (6)) (rnrs io simple (6)))
(write (eval (lambda (x) x) (environment '(rnrs base (6))))))
writes #<procedure>, which seems not to conform to R6RS, for a procedure is not a datum value.
On the other hand with:
(eval '(define a 1) (environment '(rnrs))))
an error is reported: define: not allowed in an expression context in: (define a 1) which does conform to R6RS.
BTW both R5RS and R6RS require two arguments for eval (the expression to be evaluated and an environment)
Jos
----- Original Message -----
From: "Cristian Baboi" <cristian.baboi at gmail.com>
To: <plt-scheme at list.cs.brown.edu>
Sent: Monday, July 14, 2008 8:00 AM
Subject: [plt-scheme] Self evaluating "objects"
> Hello!
>
> I've tried the following expression in PLT 4.0.2 and Gambit-C 4.2.8 and
> got different answers:
>
> (eval (lambda (x) x))
>
>
> PLT
>> (eval (lambda (x) x))
> #<procedure>
>
>
> Gambit-C
>> (eval (lambda (x) x))
> *** ERROR -- Ill-formed expression
> #<procedure #4>
> 1>
>
> I've browsed trough R5RS and R6RS and I was not able to figure out which
> behavior is the right one.
> Is this implementation dependent or it is prescribed by some standard ?
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20080714/a899db82/attachment.html>