The parentheses can decrease readability and the prefix math expressions can make the order in which you think up a solution awkward.
http://sourceforge.net/p/readable/wiki/Problem/
http://cs.brown.edu/~sk/Publications/Papers/Published/mfk-va...
The parentheses can decrease readability and the prefix math expressions can make the order in which you think up a solution awkward.
http://sourceforge.net/p/readable/wiki/Problem/
http://cs.brown.edu/~sk/Publications/Papers/Published/mfk-va...
1) Easier to learn and remember syntax for polyglots. No more Googling, shit like "what was the syntax for try-with-resources or the new multi-catch feature in java"?
2) The language tooling is so much easier to get right. The parser for Ruby is 10k lines. What the actual fuck? How can you expect people to make good tools if they can't get past the parse step?
3) Macros!
4) No fucking precedence rules. I don't want to memorize that the precedence for 'and' and && is different in Ruby and how 'and' interacts with the precedence of other operators like assignment.
5) Structural editing.
I might have forgotten a few, but 2) and 3) alone are killer features.
Edit: Elixir [2] is homoiconic as well, with even more uniform syntax (though it doesn't have special matrix syntax).
The only time it becomes a major issue is if you are nesting many functions, but in that case the threading function is both utilized often and quite elegant.
Instead of:
(fun3 (fun2 (fun 1 "string")))
(-> "string" fun1 fun2 fun3)What's more, because one can macroexpand on the fly, you can actually see the code that it transforms into.