One of the highly-touted features is that if a program compiles, it highly likely to be mostly correct, more so than a program written in a language with a less sophisticated or strict type system.
That is, Haskell is a system for translating runtime errors to compiler errors :-)
I wonder, does programming in Haskell give rise to situations where a programmer could introduce a runtime bug that doesn't have an obvious analog (in appearance and frequency) in a less strongly-typed language?
Some basic examples that pop into my head: (not great, I am looking for advice on what to be wary of)
- asymptotic performance bugs due to laziness
- infinite loop due to wrongly structured recursion
- fundeps/type-families pushing logic to type level, where code is more "arcane" and errors are harder to spot?
Other/better examples of gotchas?