Posted: Mar 15, 2012 6:17 pm
by VazScep
mizvekov wrote:But then, setting aside here the failure of LISP machines to dominate the market, why do you think the LISP programming language is slipping away from popularity?
Well, that's a huge can-of-worms right there. I've heard that the popular theory for why it almost died out completely in the early 90s was because it was so heavily tied to AI and the Lisp machine, both of which went under because of the "AI winter". I think the more interesting question is why Lisp came back to life in the 2000s.

Do you think it was mostly because of chance, or that it had some fatal flaw that was never fixed?
I'm not sure what it would mean to have a "fatal flaw" other than a flaw which leads it to die out. And I'm not sure that's the right way to look at things. I mean, I think Java and Python are full of flaws, but it doesn't seem to affect their popularity.

VazScep wrote:What do you miss the most in terms of developer tools for haskell?
1) Refactoring tools. I want to be able to intelligently replace identifiers, add arguments to functions, fix name-clashes, import new functions, automatically add deriving clauses and so on and so on, with a few keystrokes or mouse presses.
2) The ability to develop entire systems at the toplevel and save a runtime image (as it is, even my interpreter bindings are erased when I reload a file).
3) A rich reflection API, with all types, kinds, modules, declarations and docstrings available as runtime objects, including cross-references to source files. This is the real enabler. It makes things such as Common Lisp's/Clojure's SLIME mode possible, it allows for intelligent autocompletion without having to continually parse code and generate TAGS files. It also means you can autocomplete definitions entered at the toplevel, as with SLIME. And it means that programmers can easily write their own developer tools.
4) The ability to query the type inferencer to ask what the type of an expression is in a partially written function definition. Visual Studio does this brilliantly for single identifiers with F# and it's a massive help to me. Poly/ML in JEdit does it for arbitrary expressions.