From: Mike Gold Date: 2009-02-25T15:04:46+09:00 Subject: Re: Nexus Programming Language M. Edward (Ed) Borasky wrote: > > The parentheses are in Lisp because functions (and special forms) have > variable arity. If they had fixed arity the parentheses would not be > required. But since S-expressions were defined using parentheses and > Lisp wanted programs to look like S-expressions, variable arity was > thrown in as a bonus. :) The parentheses are there for power: code is data, data is code. When evaluated as a language only, putting aside external issues such as mindshare, it is an objective statement to say that lisp is more powerful than any language which does not have the code-data equivalence. And the only languages which have it are lisp-like (with the possible exception of Dylan). Without end we could discuss popularity, "naturalness," "well I like ...", blah blah blah. But it remains an empirical fact some things can be done in lisp which cannot be done in ruby, unless ruby greenspuns its own code processor. In lisp you can manipulate code _in code_. The curious can ponder the implications of that, and/or learn some lisp to get a sense of it. The incurious will rage against it and call me a troll. If I understand Pascal's point, if he has one, it is that the vast majority of programmers do not realize that the non-lisp language they use is preventing them from thinking certain thoughts. If after reading the previous sentence you shouted "bullshit!", then you might not be fully aware of this special code-data equivalence and why it makes lisp and lisp-like languages different. I still remember sudden realization I had when saw what the comma does inside a lisp macro. It has no counterpart in other languages. I am not soliciting opinions on what is more practical, what you prefer, what is better, or what your favorite color is. I am just giving an overview of the core language itself, with all those issues aside. -- Posted via http://www.ruby-forum.com/.