3 ms·
> Lisp just isn't that much better than our current languages. Sorry. No need for apologies -- it weakens your argument and makes you sound unsure. Lisp is th
by agentultra 10y ago
> Lisp just isn't that much better than our current languages. Sorry.
No need for apologies -- it weakens your argument and makes you sound unsure.
Lisp is that much better than most languages. The isomorphic syntax used to represent both data structures and program code is an oft-touted feature that few languages lay claim to (so-called, homoiconicity). The reason this concept is wonderful is that it allows us to use syntactic substitution with the same rigour as Leibniz and Tony Hoare. We can take any expression, substitute parts of it with other expressions and give it a symbol. And because the rules of substitution in Lisp are well defined it works all the way down.
Where you run into trouble is with the dynamic environment. CL decided it was enough to give programmers a function to generate unique symbols. Others such as Scheme insisted on a hygenic macro system. The difference is that one requires the programmer to be more careful in order to not restrict the forms one can write.
This is why macros are cool.
Other features I miss (that aren't unique to Lisp):
- Incremental compilation (Eiffel)
- Conditions and restarts (Multics)
- Circular data structures
Update: grammar.
- JadeNB 10y ago> with the same rigour as Leibniz and Tony Hoare I think that may be the first time that has ever been written (not least because Leibniz was no model of rigour …).
- agentultra 10y agoCorrect and, now that I think about it, funny. Leibniz of course turned out to be right (or had the right intuition) but he failed to provide rigorous definitions of limits, functions, etc. I only made the connection as some models of assignment I've seen use a rule of syntactic substitution from Leibniz in the method of proof. Rigorous if you're a programmer not used to using proofs.