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

Joe Armstrong <>
Tue Feb 28 22:24:20 CET 2012


On Tue, Feb 28, 2012 at 7:21 PM, Thomas Lindgren
<> wrote:
>
>
>
>>________________________________
>> From: Jesper Louis Andersen <>
>>To: 
>>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
>>> <>  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

Yes ! - I've now implemented a patch system

so you can say

addMod foo end.

   New defs

   ...

deleteFunc M:F/A end.

  which deletes a function from a module

in erl1 you manipulate modules themself - but in erl2 it's easy .

Next idea clone :-

I think something like

Mod2 = clone Mod1
deleteFunction Mod2:foo/1 end.
...
addMod Mod2.
 new defs
 ...

is fun

(clone just copies all the existing mod defs into a new module)

/Joe








>
> Best regards,
> Thomas
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list