Re:The Failure of Lisp? A Reply To Brandon Werner
by lallysingh on Thursday September 18, 2008 @07:58PM
(#308743)
Or:
1. Allow a factory for Class.
2. Make Method contain the full body contents as a list of statements, and give them a factory as well.
Then it's a matter of reasonable constructor syntax.
Re:The Failure of Lisp? A Reply To Brandon Werner
by orib on Friday September 19, 2008 @01:17AM
(#308977)
And a whole lot of "wait, what tree does this code map to again?"
With lisp, there's no difficulty mapping:
int main(int x) {foo()}
to Method m = new Method(return:=new Type(int),
args := new ArgList(
new Arg(new Type(int),
new Name("x"))),
body := new Block(
.... I'm sure you get the point....The syntax tree is apparent from the syntax.
(+ 1 2 (* 3 4))
Maps to: '(+ 1 2 (* 3 4))
Here's an example. Take, for example, this class declaration:
How do you make that into data? Easy. Just quote it: Now take the equivalent in Java: How do you get that into data? Well, I suppose the best you could do without modifications to the core language is just put it in a string. But then to do something useful you'd have to do so much tedious string parsing it wouldn't be worth it. I suppose you could invent a special ParseTree class or something, and a quote operator, and etc etc, but that wouldn't be nearly as easy as Lisp makes it.What the previous poster was saying is that once other languages have a code representation that is easy to work with as data, and can manipulate that code as data at compile-time to produce complex macros, then Lisp might fade. (At least that's how I understood it, correct me if I'm wrong.)