I mentioned previously that Joel Reymont is using Haskell these days for some of his 'real world' programming systems. I hoped at the time that he would outline some of his stuff on his weblog with comparisons to Erlang.
Since then he has put up a Haskell vs Erlang post where he describes some of the things he's come across while using Haskell to write a distributed testing tool for his poker server. Both his poker server and distributed tester are heavily network oriented products. One of Joels comments on using Haskell vs Erlang is:
Erlang is the language for network programming!
He comments that when writing in Erlang he concentrated mainly on the actual logic of the application rather than the concurrency, network, binary parsing, etc as Erlang handles the latter. With Haskell he has spent most of the time on the infrastructure and very little on the application logic.
I did get my Haskell app to the point where it's about 90% ready and working but most of my attention was spent on... binary packet parsing, serialization, networking and heavy-duty concurrency. Oh, yeah, and minimizing memory usage. Yes, it's working now but it took blood, sweat and tears. It's now two months later and I have yet to see the Haskell app launch thousands of poker clients and run them for hours.
Interestingly he is still continuing with Haskell:
Based on the above, would I continue coding in Haskell or go back to Erlang? Not really! There's a steep learning curve to Haskell but the experience is extremely rewarding. Your code looks neat and if it compiles then it probably works since the type checker has been all over it.
Joel goes further into why he likes Haskell in a later post.