<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.6000.16674" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face="Courier New" size=2>Why bother about eval? 
Nevertheless:</FONT></DIV>
<DIV><FONT face="Courier New"><FONT size=2><FONT face="Courier New" 
size=2></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>From: </FONT><A 
href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-17.html#node_idx_1266"><FONT 
face="Courier New" 
size=2>http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-17.html#node_idx_1266</FONT></A></DIV>
<DIV><FONT face="Courier New"><FONT size=2><FONT face="Courier New" 
size=2></FONT></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>QUOTE</FONT></DIV>
<DIV align=left><FONT face="Courier New" size=2>(</FONT><A 
name=node_idx_1266></A><FONT face="Courier New" size=2>eval expression 
environment)&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;</FONT></DIV>
<DIV><FONT face="Courier New" size=2>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 
</FONT><A name=node_idx_1268></A><FONT face="Courier New" size=2>environment, 
which can be created using the environment procedure described 
below.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>If the first argument to eval is determined 
not to be a syntactically correct expression, then eval must raise an exception 
with condition type &amp;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 &amp;syntax. </FONT></DIV>
<DIV><FONT face="Courier New" size=2>UNQUOTE</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>See also: <A 
href="http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-4.html#node_idx_52">http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-4.html#node_idx_52</A></FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>In #lang scheme and mzscheme and pretty-big 
the value of a procedure is that procedure. There is #!r6rs though, 
but:</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>#!r6rs<BR>(library 
(aap)<BR>&nbsp;(export)<BR>&nbsp;(import (rnrs eval (6)) (rnrs base (6)) (rnrs 
io simple (6)))<BR>&nbsp;(write (eval (lambda (x) x) (environment '(rnrs base 
(6))))))</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>writes #&lt;procedure&gt;, which seems not 
to conform to R6RS, for a procedure is not a datum value.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>On the other hand with:</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>(eval '(define a 1) (environment 
'(rnrs))))</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>an error is reported: define: not allowed 
in an expression context in: (define a 1) which does conform to 
R6RS.</FONT></DIV>
<DIV><FONT face="Courier New" size=2>BTW both R5RS and R6RS require two 
arguments for eval (the expression to be evaluated and an 
environment)</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Jos</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>----- Original Message ----- </FONT>
<DIV><FONT face="Courier New" size=2>From: "Cristian Baboi" &lt;</FONT><A 
href="mailto:cristian.baboi@gmail.com"><FONT face="Courier New" 
size=2>cristian.baboi@gmail.com</FONT></A><FONT face="Courier New" 
size=2>&gt;</FONT></DIV>
<DIV><FONT face="Courier New" size=2>To: &lt;</FONT><A 
href="mailto:plt-scheme@list.cs.brown.edu"><FONT face="Courier New" 
size=2>plt-scheme@list.cs.brown.edu</FONT></A><FONT face="Courier New" 
size=2>&gt;</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Sent: Monday, July 14, 2008 8:00 
AM</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Subject: [plt-scheme] Self evaluating 
"objects"</FONT></DIV></DIV>
<DIV><FONT face="Courier New"><BR><FONT size=2></FONT></FONT></DIV><FONT 
face="Courier New" size=2>&gt; Hello!<BR>&gt; <BR>&gt; I've tried the following 
expression in PLT 4.0.2 and Gambit-C 4.2.8 and&nbsp; <BR>&gt; got different 
answers:<BR>&gt; <BR>&gt; (eval (lambda (x) x))<BR>&gt; <BR>&gt; <BR>&gt; 
PLT<BR>&gt;&gt; (eval (lambda (x) x))<BR>&gt; #&lt;procedure&gt;<BR>&gt; 
<BR>&gt; <BR>&gt; Gambit-C<BR>&gt;&gt; (eval (lambda (x) x))<BR>&gt; *** ERROR 
-- Ill-formed expression<BR>&gt; #&lt;procedure #4&gt;<BR>&gt; 1&gt;<BR>&gt; 
<BR>&gt; I've browsed trough R5RS and R6RS and I was not able to figure out 
which&nbsp; <BR>&gt; behavior is the right one.<BR>&gt; Is this implementation 
dependent or it is prescribed by some standard ?<BR>&gt; 
_________________________________________________<BR>&gt;&nbsp; For list-related 
administrative tasks:<BR>&gt;&nbsp; </FONT><A 
href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme"><FONT 
face="Courier New" 
size=2>http://list.cs.brown.edu/mailman/listinfo/plt-scheme</FONT></A></BODY></HTML>