Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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

share|improve this question
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. –  dan_waterworth Mar 14 '12 at 11:49
add comment

closed as off-topic by MichaelT, Corbin March, GlenH7, Dan Pichelman, gnat Sep 13 '13 at 6:49

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – MichaelT, Corbin March, GlenH7, Dan Pichelman, gnat
If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers

up vote 3 down vote accepted

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

share|improve this answer
    
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 Mar 8 '12 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 Mar 8 '12 at 15:53
add comment

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.

share|improve this answer
add comment

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.
share|improve this answer
add comment

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