
Lisp Repl.it Tutorial - amasad
https://medium.com/@eric.q.weinstein/lisp-repl-it-tutorial-9a8f2d7d7584
======
amasad
I submitted the story with a "Make a Lisp in 200 Lines of JavaScript" which I
think is a better title because Repl.it is only the platform that the author
implemented on.

Unfortunately, the mods reverted it to the article title.

~~~
gooseus
Dems the rules:

>If the original title includes the name of the site, please take it out,
because the site name will be displayed after the link.

> If the original title begins with a number or number + gratuitous adjective,
> we'd appreciate it if you'd crop it. E.g. translate "10 Ways To Do X" to
> "How To Do X," and "14 Amazing Ys" to "Ys." Exception: when the number is
> meaningful, e.g. "The 5 Platonic Solids."

> _Otherwise please use the original title, unless it is misleading or
> linkbait; don 't editorialize._

------
avmich
Another useful article helping understand how lisps work is
[http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-
equat...](http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-
software/) .

There are three important data types in these interpreters. Of course they all
can be created, but conceptually you'll need them.

First type is the atom - initially you need a symbol, then you can add a
number and a string as a kind of an atom.

Second type is the list - the way to aggregate data, to allow more complex
structures, like trees and association lists.

Third type is the function. In many simple lisp implementations the function
type is taken from the language in which lisp interpreter is implemented.
Norvig's Jscheme shows how to implement the function manually.

A bunch of high level concepts are of course omitted - there are no macros,
continuations, tail recursion optimization, garbage collection is often taken
from the host language etc. - but still it's a capable model.

