I used haskell in different startups and is was most of the times a good choice. I have written a dozen of (embedded) domain specific languages to support rapid development. This is quite easy in haskell. Parsec helps with writing parsers for your DSL.
What I saw, was that the amount of tests could be reduced, when using haskell. The type of testing is also somewhat different. You don't have to test for type errors. QuickCheck let you test mathematical properties (in an empiric way).
The FFI compensates for the missing libraries, but is a bit difficult to use.
But the biggest reason of using haskell for me, was the way it handles concurrency and the high abstraction level. This enables you to write distributed applications in a more convenient way than usual.
If you working in a web start up, you hit somewhere a point, where you need to think about this stuff.
Besides Yesod, Snap is also a interesting choice, because of it's simplicity.
I enjoy using this language. I would choose it anytime. It made me a better programmer.
one big kick, since haskell is pure functional you don't have state (okay, in terms that imperative programmer use that term) and all data are immutable.
What I saw, was that the amount of tests could be reduced, when using haskell. The type of testing is also somewhat different. You don't have to test for type errors. QuickCheck let you test mathematical properties (in an empiric way).
The FFI compensates for the missing libraries, but is a bit difficult to use.
But the biggest reason of using haskell for me, was the way it handles concurrency and the high abstraction level. This enables you to write distributed applications in a more convenient way than usual. If you working in a web start up, you hit somewhere a point, where you need to think about this stuff.
Besides Yesod, Snap is also a interesting choice, because of it's simplicity.
I enjoy using this language. I would choose it anytime. It made me a better programmer.