D-Expressions: Lisp Power, Dylan Style (1999) [pdf]
I know at first it looks confusing, but the lisp syntax is pretty much the best. I can teach it to someone in 1 minute:<p>(&lt;function or macro name&gt; arg1 arg2 ...)<p>That&#x27;s it. This is 100% of the syntax.<p>If dealing with a function, the evaluation will always be arguments from left to right are evaluated first, and then the function is called with the result of evaluating the args. This is 95% of the cases.<p>If dealing with a macro, go read the documentation for it, because every macro is a DSL, and evaluation can happen in different ways. This is the 5% case.<p>All the complexity of learning a lisp comes from knowing more functions, what they do and how to use them, and learning each macro&#x27;s DSL.<p>Can this syntax be improved on, I&#x27;m not so sure. Clojure added some special syntax for some more literals, such as [] for vectors, {} for map, etc. And I do think in one way they help, but in others they hurt.<p>Maybe adding something that distinguishes a macro from a function, but once you know the names of them, the name is enough to know.<p>Maybe make it so there is a more visible demarcation between the function&#x2F;macro name and the arguments. Not sure how though.<p>All that to say, if you give the ayntax a good chance, like 2 to 3 months of 40h a week for your brain to more clearly see where the functions start and end, I&#x27;m sure you&#x27;ll like it.