

In fact, even C isn't good enough: you have to restrict yourself to a particular subset of C to ensure performance is consistent enough. This is another area where Haskell's performance doesn't cut it, but neither would most other languages.

But you can use a Haskell DSL that generates, for example, LLVM bytecode, and it can give you real advantages.Ī real-life example is the Ivory language designed by Galois for writing hard real-time control software for UAVs. You can't use Haskell for that, but neither can you use Java or Python or the vast majority of other commonly used languages. Computational physics is a great example-nothing short of C or Fortran works for the most demanding problems in that area because performance dominates other concerns. One particular distinction is that Haskell is great at domain-specific languages, which lets it extend to domains the base language can't handle. Exactly the niche Python fills now, except Haskell does it in a totally different style, one I like way more. Haskell gives us a high-level language with great facilities for abstraction, a type system to help organize and lightly verify our code and reasonable performance. Personally, I see Haskell as the closest analog to Python in practice: expressiveness is exactly what matters most. I might have gotten a lot of things wrong, so please, fire at will.

But if the language serves no practical purpose other than intuitive code and amazing readability, I don't understand why anyone should even learn Haskell. While it's really, really awesome, I don't understand why.įor instance, if I were to look at computational physics which relies heavily on computational power, then Haskell would be practically worthless because (I've heard that) Haskell is extremely resource hungry (probably from all that recursion). On the wikipedia, it says that Haskell is used in Academia. I'm fairly interested in functional programming because it seems more intuitive to me than imperative programming (once you get past the difficulty you experience when moving from imperative to functional). I've started learning Haskell fairly recently (using Learn You A Haskell) and I'm getting pretty into it.
