Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I just deleted a very long reply that is probably inappropriate here.</p> <p>However consider that:</p> <ol> <li><p>LISP has no "syntax" if you mean it with the meaning it has for languages like C/Java/Pascal... there is an (initial but customizable) syntax for the <em>Common LISP reader</em>, but that's a different thing (LISP that Graham is talking about is not <em>Common LISP</em>, and a (the) reader is not the LISP language, but just a procedure). Something like "(lambda (x) (* x 2))" is <strong>not</strong> LISP code, but text that for example the CL standard reader can convert to LISP code.</p></li> <li><p>LISP not only <strong><em>can</em></strong> be written in LISP (if you mean the "bootstrap" ability) but <strong><em>it actually got into existence that way</em></strong>. The very first implementation of eval in late 1950's was written in LISP on paper, and then converted manually into machine language<sup>(1)</sup>: LISP started as a purely theoric idea not meant to be implemented. I know no other computer language that followed that path. For example C++ was conceived as a pre-processor for a C compiler and was written in C, it wasn't a C++ program later converted to C to be able to run it.</p></li> </ol> <p>There are many other aspects in which LISP is quite <em>different</em>, and I think that the best way to get a grasp of it is to actually implement a toy LISP interpreter (it's a job smaller than one would think especially if your "machine language" is an high-level dynamically typed language like Python).</p> <p>(1) in <a href="http://www-formal.stanford.edu/jmc/history/lisp/node3.html" rel="nofollow noreferrer">http://www-formal.stanford.edu/jmc/history/lisp/node3.html</a> you can find how McCarthy describes that <code>eval[e, a]</code> was found on paper first as an interesting theoretical result (a "universal function" implementation neater than an universal Turing machine) when only the data structures and elementary native functions had been laid out for the Lisp language the group was building. This hand-written function was implemented by hand by S.R. Russell in machine code and started serving them as the first Lisp interpreter.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload