Lambda the Ultimate

inactiveTopic XL?
started 11/11/2003; 9:47:18 AM - last post 1/18/2004; 2:09:59 PM
Drew Bagnell - XL?  blueArrow
11/11/2003; 9:47:18 AM (reads: 217, responses: 2)
This site was posted at Slashdot

I am hard pressed to evaluate its content. Is anyone familiar with this work? Is it interesting? Does it break new ground?

Noel Welsh - Concept Programming = Macros  blueArrow
11/12/2003; 4:52:52 PM (reads: 192, responses: 0)

Concept programming is initially a very simple idea: Your code should reflect the concepts in your application.

...compiler plug-ins, or "thin-tools", which are extensions invoked by the compiler to process some specific portion of the program.

These are macros. Nothing new there. Couldn't see anything earth-shattering in the language feature list either, though the particular brew might be unique.

Christophe de Dinechin - Re: XL?  blueArrow
1/18/2004; 2:09:59 PM (reads: 97, responses: 0)
Noel, please do not confuse concept programming and thin tools. Thin tools are a consequence of concept programming, much like a 'while' statement is a consequence of structured programming.

Concept programming is a design philosophy, a deliberate focus on the abstraction process rather than on a particular form of abstraction (such as functions, lists, objects, etc). You won't see anything I call "concept" in the code, only concept representations.

Plug-ins are derive from the design philosophy as a mean to represent the diversity of concepts. There is no limited set of concepts, therefore a concept-based language must be extensible.

Plug-ins are not Lisp-style macros either (I assume from the context that's what you call "macros" in your reply), for a variety of reasons.

- One is that in the Mozart implementation, they apply to multiple languages. The same symbolic derivation plugin applies to a Java source code or to XL source code.

- A second reason, which enables the first one, is that they are external to the program, whereas a Lisp macro lives within the context of the program (you can invoke a program symbol in it, for instance, and it's taken directly from the program context).

I don't know if there is anything earth-shattering in the language feature list, but there are a few features there I'm positive are firsts (and, I gather, still unique to this day), like variable argument lists constructed using a compile-time generic instantiation mechanism, or using expression reduction for operator overloading.