fibonacci 0 = 0 fibonacci 1 = 1 fibonacci n = fibonacci (n - 1) + fibonacci (n - 2)
How often do programs crash because of an unexpected null value? Haskell programs never do! The compiler has your back; it tells you anytime you forget to properly handle an optional value.
You shouldn't have to rewrite half your code base when it's time to scale. Haskell code is thread-safe by default, and the runtime efficiently handles concurrency for you. Software transactional memory comes standard.
What if you didn't have to write out type signatures, but the compiler still caught all your type errors for you ahead of time? Haskell's type inference ensures your logs remain completely free of type errors, while you write signatures—or have the compiler write them for you—only if you think they'll be helpful.
Haskell code has a reputation: if it compiles, it usually just works. Bugs are fewer and farther between. Hackage hosts thousands of such libraries and packages, any of which you can add to your project with one line of configuration.