9 ms·
Lisp 1.5 Primer (1967) [pdf]
- zerr 9y agoMore interesting what the implementation looked alike.
- dasmoth 9y agohttp://www.softwarepreservation.org/projects/LISP/lisp1.5 http://www.softwarepreservation.org/projects/LISP/lisp1.5
- weeber 9y agoThe language is very small, may be interesting to write an interpreter.
- aap_ 9y agoI actually thought about writing a tutorial on how to write a complete "classic" LISP implementation. I know there are already hundreds of toy LISP tutorials but having LISP 1.5 as a goal and implementing it in much the same way it was implemented originally isn't something I've seen yet.
- mathattack 9y agoDoing this (for Scheme, but same concept) was the start of my programming languages class.
- throwanem 9y agoThe LISP 1.5 manual would help in such a task: http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf http://www.softwarepreservation.org/projects/LISP/book/LISP%...
- pjmlp 9y agoOr even a very dumb compiler.
- nickpsecurity 9y agoSmart thinking. See my other comment. ;)
- pjmlp 9y agoThanks, already printed it out.
- nickpsecurity 9y agoOh nice move. I'd do that but Id take out a rainforest with my collection. ;)
- torrent-of-ions 9y agoIt's fun to write an interpretor for a lisp in Common Lisp. The book Lisp in Small Pieces goes through this.
- nickpsecurity 9y agoMagnus Myreen leveraged that property when mathematically verifying one down to machine code. Used LISP 1.5. Built a bigger language (CakeML) on that. http://www.cl.cam.ac.uk/~mom22/tphols09-lisp.pdf http://www.cl.cam.ac.uk/~mom22/tphols09-lisp.pdf Note: Even if not doing formal methods, one can benefit from such work by making their interpreter equivalent in features, running the same tests/apps through both, and checking for their equivalence.
- agumonkey 9y agoImpossible, this is theoretical at best.
- emidln 9y agoThis has to be the most possible thing I've ever seen labeled impossible. Lisp 1.5 has extensive documentation and we have program listings to test against. Nothing else is really needed. Edit: This joke flew way over my head. [1] [1] "Steve Russell said, look, why don't I program this eval..., and I said to him, ho, ho, you're confusing theory with practice, this eval is intended for reading, not for computing." -- McCarthy (http://www.paulgraham.com/icad.html http://www.paulgraham.com/icad.html)
- agumonkey 9y agoMy bad, and thanks
- shakna 9y agoRubbish. Lisp 1.5 wasn't just a theory, and ran on the PDP-1, thanks to Peter Deutsch. Here's a copy that can run on an IBM 7094 emulator. [0] Several people have made interpreters over the years. [1][2][3] [0] http://www.sonoma.edu/users/l/luvisi/ http://www.sonoma.edu/users/l/luvisi/ [1] http://mentallandscape.com/Lisp.htm http://mentallandscape.com/Lisp.htm [2] https://www.oskarth.com/lisp-interpreter/ https://www.oskarth.com/lisp-interpreter/ [3] https://www.cl.cam.ac.uk/~mom22/tphols09-lisp.pdf https://www.cl.cam.ac.uk/~mom22/tphols09-lisp.pdf
- nickbauman 9y agoI love this, but at the risk of farting in church, when I see car and cdr (instead of the more sane first and rest), I feel as if millions of man hours suddenly cried out in terror, and were suddenly silenced.
- taeric 9y agoMeh. The first time I ever see fiiirst or rfst or some nonsense, I'll cry out in terror. Till then, I can live with car/cdr/cadr/cadar/etc. Somewhat opaque, but not nearly as bad as the folks complaining about it.
- nickbauman 9y agoNever a noob, were you? Never considered that the source code primacy to convey the programmer's intent and that a modified lump of sand can do something with it is a nice side effect?
- taeric 9y agoI was certainly a new programmer once. I don't remember this one catching me offguard anymore than most other things. Lambda, in particular, was much more to wrap my head around. Or defun. Even define is somewhat awkward. So, sure, first is more descriptive than car. However, first also should have applied to an array. And it does, just not in the same way. Which is itself confusing.
- shakna 9y agoThe main alternatives, first and rest, don't work as well in my head. I mean, car and cdr give you the structure: struct List { Atom car, struct List* cdr } Which also explains why an empty list, '(), is nil. rest sort of implies the next memory section of the list will always be a list. But that's just not the case with a cons cell. It is a little odd compared to many modern languages, that a data structure is so exposed to the programmer - but it needs to be. Almost everything you do is impacted by that structure, (well, compiler optimisations aside). It did catch me by surprise when I first came to the LISPy side of things, but once I understood the basic idea of the structure... There wasn't anything left to understand. It explains half the syntax by itself. Why functions are always the first item in a list, for example. car is a cheaper lookup than cdr. If instead, we weren't dealing with linked lists, but everything was a vector, with a known size, I could see first and rest as making more sense.