[erlang-questions] ANNOUNCE - erl2 - a new dialect of erlang
Tue Feb 28 22:24:20 CET 2012
On Tue, Feb 28, 2012 at 7:21 PM, Thomas Lindgren
>> From: Jesper Louis Andersen <>
>>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.
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.
(clone just copies all the existing mod defs into a new module)
> Best regards,
> erlang-questions mailing list
More information about the erlang-questions