5 ms·
Haskell also supports metaprogramming and a REPL, these are not unique to Lisp. But granted, Lisp's syntax makes metaprogramming very convenient.
by willtim 9y ago
Haskell also supports metaprogramming and a REPL, these are not unique to Lisp. But granted, Lisp's syntax makes metaprogramming very convenient.
- ninesigns 9y agoAFAIK Haskell doesn't support metaprogramming. Perhaps you mean "Template Haskell"?
- willtim 9y agoTemplate Haskell is meta-programming. It supports quasi-quotation, just like Lisp.
- lispm 9y agoquasi-quotation is an unrelated feature in Lisp. It's there to build list structures from templates. Using templates in macros is sometimes helpful, sometimes not.
- willtim 9y agoIn Template Haskell quasi-quotation is how one would add new syntax, but it's not necessary either if all that is required is macro expansion.
- Chattered 9y agoIt's a pretty poor REPL. Every time you update your code, you have to reload, and you lose all your previous bindings. And, no, I don't simply want to rerun my interactive session. I want a persistent session. When doing theorem proving in Ocaml (which was both ML's and Lisp's MOs), my REPL session could last months. I sadly didn't have Lisp's great (save-lisp-and-die) in Ocaml, but I was able to snapshot the process state to get semiway there. Common Lisp is built around the idea that your runtime is a persistent live system that you stay in and modify and introspect. Your tool-chain should consist entirely of Lisp objects that are part of your runtime, and should themselves be modifiable. Everything is programmable. The Art of the Metaobject Protocol is still one of the coolest things I've ever read. I'm a Haskeller now, through and through, but Haskell's REPL and runtime isn't comparable to Lisp's.