[erlang-questions] ANNOUNCE - erl2 - a new dialect of erlang

Thomas Lindgren thomasl_erlang@REDACTED
Tue Feb 28 19:21:42 CET 2012

> From: Jesper Louis Andersen <jesper.louis.andersen@REDACTED>
>To: erlang-questions@REDACTED 
>Sent: Tuesday, February 28, 2012 5:46 PM
>Subject: Re: [erlang-questions] ANNOUNCE - erl2 - a new dialect of erlang
>On 2/28/12 10:42 AM, Tomasz Maciejewski wrote:
>> W dniu 28 lutego 2012 10:34 użytkownik Tim Watson
>> <watson.timothy@REDACTED>  napisał:
>>>> I see a hierarchy of languages
>>>> erl = erl1
>>>> erl2 = a program that generates 100% erl1 programs (ie meta programs)
>>>> erl3 = a program that generates erl2 programs            (meta meta programs)
>> We need to go deeper. ;-)
>That is easy! Just install Coq or Agda2 :) Many systems in CS have infinite size in a turtles all the way down fashion. So you can build a world1 in which world0 can be described. And world2 can describe world1 and so on. In the end you have a (countably infinite) stack of worlds.

Or if you want to search for the roots, look for Brian Smith's 3Lisp. Here's a lecture transcription/overview that might whet your appetite: http://www.ccs.neu.edu/home/matthias/369-s04/Transcripts/reflection.html
I assume the ACM DL has the actual papers, as the last resort. It looks like much of the work on reflection was really done in the 80s.

My own introduction to the topic came with John Allen's Anatomy of Lisp, which in retrospect referred to McCarthy's original Lisp 1.5 Manual: http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
Okay, that manual might be a bit cryptic, but you get to see what a Lisp-in-Lisp interpreter looks like, which is the foundation of meta towers. And in addition to S-expressions, you will also learn about the less well-known M-expressions. Well ... in 1962 it was a bit of technology from the future, so it might be of some historical interest.

This thing about _generating_ programs also makes me think of partial evaluation, of course, and the Futamura projections (interpreter, compiler, compiler-generator). If your interests go in that direction, I think this is still the bible: http://www.dina.kvl.dk/~sestoft/pebook/pebook.html

Best regards,

More information about the erlang-questions mailing list