Haskell is one of the easiests and best language for prototyping complex applications. The Naval Surface Warfare Center shows how an unexperienced student wrote a fully working prototype for a component in the aegis weapon system.
An experienced haskell programmer even made such a program, that an independent reviewer thought he was looking at the requirement specifications mixed with top level designs. He didn't believe it was a real program, which could be compiled as an executable.
Both programs where the most concise implementations and where verified by an external reviewer. Both were correct following the specifications and were the most easy to understand.
>easiest
>best
Haskell is slow, leaks tons of memory and its probably order of magnitude harder than any language.
It just has high code density(but not as high as APL)
It is easier than any other language: "
Intermetrics, independently and without the knowledge of NSWC or Yale University, conducted an experiment of its own: the Haskell Report was given to a newly hired college graduate,
who was then given 8 days to learn Haskell. This new hire received no formal training, but was
allowed to ask an experienced Haskell programmer questions as issues came up during the self
study. After this training period, the new hire was handed the geo-server specification and asked
to write a prototype in Haskell. The resulting metrics shown in row 10 of the table are perhaps the
most stunning of the lot, suggesting the ease with which Haskell may be learned and effectively
utilized.
Haskell actually is amazing for prototyping any sort of complicated algorithm.
That said, I don't like using it for a lot of practical applications. A lot of the libraries, which are much-hyped, are completely broken a huge portion of the time. I've downloaded current, "stable" releases of libraries that should be very popular and had them just not work. Cabal has also managed to fuck up and become a nightmare on every machine (Debian, Ubuntu and Arch years ago) I've ever used it on.
IMO, Haskell is built for drafting a known problem with complexity, not for doing something innovative and "cutting edge" on the first go around, where you're slowly trying to design and create something new by iteration.
I use it the same way. First built it in haskell as reference implementation, because it is easier to show it is correct. And then built it in C or C++ and compare it with the reference implementation, mainly because of speed.
And sometimes for just creating a small DSL for one problem or another.
The air here is suddenly filled with spiders, what the fuck is happening.