photosinensis wrote:And while I agree that it's a very powerful and effective language, the parentheses totally suck. There are just too damn many of them. No, give me my curly braces, please.
MzScheme allows braces and brackets as well as parentheses. They perform exactly the same function but you could choose e.g. to use braces for function definitions and loops, brackets for quoted lists or list comprehensions and parentheses elsewhere. They also provide a bit of syntax checking since opening braces must match with closing braces, etc.
EvanED wrote:Plus, Lisp has powerful macros. That alone gives it an absolutely tremendous bonus over just about everything else out there.
Exactly. When I was first looking into Lisp I came across Peter Norvig's Lisp-Python
comparison. It marks in red what he sees as deficiencies in one language compared to the other. I think Python is on the way to fixing most of those, but Lisp's can be fixed in a pageful of macros.
List comprehension? Macro. Vector and hashtable literals? Macro; although a function would do much the same job with little overhead.
What would be more interesting is a comparison between Lisp and Haskell. Currying? Macro. Pattern matching? Macro. Monads? I suspect you can implement those with a macro too, but I don't yet understand them well enough to try.
And as for type checking (using sequent calculus, apparently more powerful than Haskell's type class system) Qi
has already done that, together with currying and pattern matching...
EvanED wrote:Dylan, which is almost a Lisp anyway
Is Dylan still alive? I had trouble installing Open Dylan and can't find a single active forum or mailing list. Which is sad, since the website claims that Dylan came second place in the ICFP recently.