libera/#lisp - IRC Chatlog
Search
5:08:52
rigidus
I would be grateful to anyone who could tell me how to write my own lisp. So far I'm doing the "Make own Lisp" tutorial, but there may be some aspects that aren't covered there. My goal is to go all the way from a simple lisp, to a mature implementation such as sbcl. Please recommend me articles and repositories!
5:11:33
mfiano
It is unclear what you are asking. On one hand, you talk about making a lisp, but on the other hand an implementation of one particular dialect of lisp.
5:15:15
rigidus
mfiano, Of course, I want to understand the general principles of lisp construction. I gave sbcl as an example of a feature-rich implementation
5:16:10
mfiano
rigidus: So, does that mean you are interested in the whole family of languages called Lisp, or just the implementations of the dialect called Common Lisp, which SBCL is a member of?
5:16:44
mfiano
There is also Scheme, Clojure, Racket, Carp, and insert N other languages in the Lisp family
5:17:16
mfiano
They are all pretty different from one another, but share common roots, like C++ and Java.
5:17:57
rigidus
mfiano, I am interested in the whole family of lisp languages, preferring among them those with separate namespaces for variables and functions and unhygienic macros.
5:19:38
mfiano
Ok so that limits things significantly. Common Lisp and Emacs Lisp are going to be your go-to dialects to look into, but starting simple is your goal, so I would familiarize yourself with something small like R7RS Scheme
5:20:09
moon-child
ACTION was at one point going to make a lisp interpreter tutorial; partly as a counterpoint to 'build your own lisp', but mostly because he needed something to do in the intense summer heat that made it impossible to think
5:20:14
rigidus
I also want to be able to implement basic meta-object protocol functions at the end of my lisp-building work, so I am focusing on Common Lisp. Of course I don't plan to implement the whole standard, it's too much work. I just want to understand how it's possible.
5:21:03
mfiano
I don't know what other resources would be useful, apart from maybe lurking around in #sicl, an active implementation being developed.
5:24:46
rigidus
jcowan, Where should I look for something that explains how Interlisp is implemented?
5:26:19
an_origamian[m]
Crafting Interpreters is a pretty good tutorial on writing a simple scripting language.
5:27:32
jcowan
Like Smalltalk=80, Interlisp is image-based with source file backup, except that you can have an arbitrary number of source files.
5:28:30
jcowan
Arguably, CDR-coding should be have been removed when the max image size was increased to 256M; it's a major source of speed inefficiency
5:33:33
rigidus
jcowan, thanks for link to interlisp.org. I also saw the Genera demo on youtube and was very impressed. I hope I can explore it too
5:35:02
jcowan
Note that Medley Interlisp supports not only the Interlisp language but an incomplete implementatinon of CL as well, fully integrated (numbers, functions, conses, arrays etc. are the same on both sides)
5:37:27
rigidus
moon-child, probably yes. I was impressed with what was said at the presentation, the system seemed to me to be well designed
5:40:58
jcowan
http://www.faqs.org/faqs/lisp-faq/part2/section-9.html is a better explanation of cdr coding
5:47:42
jcowan
Remember, there are three types of cells: "cdr is in the next word", "cdr is nil", "cdr pointer is in the next word." The third type is used to handle mutations, including circularity.
5:48:16
jcowan
(THere is a fourth tag, "this celll is a cdr pointer"), but that is never referenced)
5:49:50
moon-child
yeah, cdr coding doesn't just mean you replace lists with arrays. We have arrays already; they're called arrays