I have been writing code for a few years now and I don't believe I can claim to have a complete knowledge in this job yet.

My experience primarily rolls around C# related areas with a decent knowledge on Silverlight and Asp .Net MVC as well. I tend to use Sql server and Postgres for normal RDBMS related tasks with Mybatis or LinqtoSql as ORM (and Cassandra as well for NoSql).

Given that background, I am looking to building a new project which is a normal application using database and user interface screens. It is considerably a big project which we plan to be rolled out as a product.

In recent times, I see a lot of noises being made about functional programming like Haskell and F#. I am wondering - if it is worth to build the new system using Haskell - or just stick to a regular application building model using Silverlight/Prism with a layering similar to onion architecture

I understand the benefit of staying with the same technology background as it is always good to work on a familiar technology.

I also heard that by moving towards a functional language like Haskell we get cleaner code, improved testability etc.,

Is it really worth considering a move to build new systems in Hasekll? Or it is yet to be proven in production environments?

Simply put would I be safe if I build the new project using Haskell and my preferred database or it is too risky at this point in time to choose Haskell.

Any help appreciated.

Edit: I have already viewed a few other threads like the following and a few more as well, but did not get a definitive answer. Choosing a functional programming language

  • 1
    Even if you don't end up using it, learning Haskell will teach you things that other functional languages can't. You may find that you write better f# as a result. Commented Mar 14, 2012 at 11:49

3 Answers 3


If you want to stick with .net use F#. From what I understand it is a really nice language and borrows from haskell quite heavily (The Don Syme and Simon Payton Jones have offices on the same hall at MS Cambridge)

Haskell has been proven in some very high end production environments. Many banks use it for things like trading systems. Due to how its type system works you have a lot of very strong guarantees about how your system will run. The only downside is that it is very different and learning it can be a bit of an effort.

You might also want to take a look at Erlang

  • I'll definitely consider Erlang. Is the learning curve in this area too steep? I understand the risks on considering resources side which may pinch on my head at a wrong time.
    – Muthu
    Commented Mar 8, 2012 at 12:08
  • I don't think the learning curve is huge the best resource for learning Erlang is learnyousomeerlang.com which is quite good. There is also a book on learning Erlang in the works at O'Reilly, but its not in the catalog yet, I can say that I have read the first chapter and it should be quite good. If you are planning to build a web service check out my book "Building web application in Erlang" shop.oreilly.com/product/0636920021452.do which you can now buy in early release but will be in final release in about 6-8 weeks
    – Zachary K
    Commented Mar 8, 2012 at 15:53

I use haskell in production to build web application interfacing with MS Sql Server. I love it, i am very productive with it. And i feel much safer because compiler is extremely helpful in catching my mistakes. Much more so than java/c#

Having said that, if you phrase your question as "will i be safe with this choice" instead of "what do i get from it", then you certainly should stick with c# or java.

Haskell is very different. You will spend much more time learning it than learning any other imperative language.

Haskell still does not have neither adequate tooling (lack of IDE) nor many useful libraries (for example no good pdf library)

You are asking is it worth it to build new systems with haskell. But are you building them alone ? What about other members of your team ? What about future members of your team ? Where will you find haskellers ? How will you persuade dotnet or java programmers to embark on a hard and long learning process with a completely new and alien language ?

Haskell is definitely worth it, if you love programming and not just do it for money. But you are not working alone in a vacuum. A lot of decisions have to be made with your environment in mind, people you work with etc.


Can't say anything about Haskell, because I didn't use it. But as a .NET developer I advise you taking a look on Nemerle if you are considering use of F#. Even though Nemerle is not supported by Visual Studio as good as F#, there is a perfect extension which solves all the problem with integration. Why do I recommend Nemerle?

  1. It's written on .NET and for .NET platform.
  2. It's a perfect functional language (even better than F# on the same platform).
  3. It supports macros conception very well. So you can easily can extend the existing type system and even build your own DSL without making effort.

To be honest, I have to remind the main disadvantages of Nemerle which may also be applied to some other functional languages:

  1. It can be rather difficult to find developers which know Nemerle (and Haskell/F#) for your project. At least it's much harder than to hire a 'regular' C# developer.
  2. Nemerle (and Haskel) and some other languages are not well supported by .NET platform. So you can rely only on yourself and the community of the chosen language.

Not the answer you're looking for? Browse other questions tagged or ask your own question.