[comp.lang.scheme] Why no eval?

bobg+@andrew.cmu.edu (Robert Steven Glickstein) (09/20/89)

Why does R^3RS omit a specification for an EVAL procedure?  It would
seem to have been omitted intentionally.  What's the reasoning behind
this?  Is there a trivial way to write an EVAL procedure?

_______________________________
Bob Glickstein, System Designer
Information Technology Center  room 220
Carnegie Mellon University
Pittsburgh, PA  15213-3890
(412) 268-6743

Internet: bobg+@andrew.cmu.edu
Bitnet: bobg%andrew.cmu.edu@cmuccvma.bitnet
UUCP: ...!harvard!andrew.cmu.edu!bobg

Vote anarchist

alms@cambridge.apple.com (Andrew L. M. Shalit) (09/20/89)

In article <YZ5cNR600VsnI0cEgG@andrew.cmu.edu> bobg+@andrew.cmu.edu (Robert Steven Glickstein) writes:

   Why does R^3RS omit a specification for an EVAL procedure?  It would
   seem to have been omitted intentionally.  What's the reasoning behind
   this?  Is there a trivial way to write an EVAL procedure?

EVAL requires access to environments, which Scheme doesn't currently
provide.  Making environments first class (or even second-class but
accessible) is a very sticky problem, subject of much discussion
bordering on flamage.  First class environments make analysis and
compilation harder, and they make it harder (impossible?) to understand
what a program could potentially do.

What uses for EVAL did you have in mind?  There are probably other
ways to do what you want (unless you want to write a debugger).  Also,
most implementations of Scheme do, in practice, support an EVAL of
sorts (for use in their read-eval-print loop, at least).