From: Pascal J. Bourguignon on
Kazimir Majorinc <email(a)false.false> writes:

> Do you know:
>
> * the first known occurrence of the
> phrase "code is data;"

1932, G�del Theorem. (Perhaps not formally, but that's the idea).


> * the first article or book that discussed
> and discouraged use of eval in CL or any
> other Lisp dialect?

1960, the bug in mapcar/lambda due do dynamic scope. Well, that's the
root.

The problems in using EVAL in CL comes from the introduction of lexical
scope, which is not accessible to the forms passed to EVAL. At the same
time, the introduction of macros, replacing FEXPR, superseded most needs
for EVAL.



--
__Pascal Bourguignon__
From: joswig on
On 20 Feb., 10:26, p...(a)informatimago.com (Pascal J. Bourguignon)
wrote:
> Kazimir Majorinc <em...(a)false.false> writes:
> > Do you know:
>
> >   *  the first known occurrence of the
> >      phrase "code is data;"
>
> 1932, Gödel Theorem.  (Perhaps not formally, but that's the idea).
>
> >   *  the first article or book that discussed
> >      and discouraged use of eval in CL or any
> >      other Lisp dialect?
>
> 1960, the bug in mapcar/lambda due do dynamic scope.  Well, that's the
> root.
>
> The problems in using EVAL in CL comes from the introduction of lexical
> scope, which is not accessible to the forms passed to EVAL.  At the same
> time, the introduction of macros, replacing FEXPR, superseded most needs
> for EVAL.
>
> --
> __Pascal Bourguignon__

Lisp developers detected at least late 70s that FEXPRs
are not needed most of the time.

MacLisp had FEXPRs and Lisp Machine Lisp also has FEXPRs.
But if you look at the sources of the Lisp Machine OS from 1982,
FEXPRs are simply nowhere used. They are provided and the debugger
knows about them, but in no library or application code are they
used. There are around 150 thousand lines of code and almost all
FEXPR related code is to provide them and there is nothing that
really uses them. EVAL is also only rarely used. For example
in ZMail, the mail application, for filters and for
running a initialization form for a printer - that's mostly it in
ZMail,
a larger application in the Lisp Machine OS.

If FEXPRs and EVAL would be that important, then I would
expect that on an early Lisp Machine, with developers
still knowing about FEXPRs, one would have found
prominent use. But that's just not the case.
EVAL was used where useful and FEXPRs mostly not.
FEXPRs were probably provided for making it
easier to port legacy code.