One weekend, Andy went home with the explicit goal of proving that Haskell was stupid and not good for writing production software. He came back on Monday glowing.
I certainly wasn’t prepared for some of the areas where Haskell would blow me away, nor was I capable of realizing which parts would leave me hopelessly frustrated.
As with many things Haskell, there’s a somewhat higher upfront cost, but it makes your life a lot easier as your programs scale up.
When programming the BDD way, you start writing the specs first. This is not only a good practice, it also helps to reason about your code as a series of individual decoupled units.
You can use it for background services within a GHCi session that survive loading, reloading and unloading modules, which is particularly useful when writing long-running programs like servers and user interfaces.
Haskell has a reputation for being a safe language. One that generally speaking pushes more of the possible programming errors to compile-time errors.
Haskell has immutable values, which is understood and appreciated. Does it even have immutable variable binding?