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 am looking at this question primarily from a career point of view, so I hope you answer it accordingly.

I am fairly proficient with Python, can write C++ and I am a final year student of computer science engineering I am looking to learn Haskell because I have heard a lot about it.

My question is: apart from learning it because of all the good I have heard about it, is it any good for my career? Is it used in the industry?

I am curious to learn it but unless it helps me somehow in my career, I am not willing to make that change at this stage.

Looking for some personal experiences here. Thanks!

share|improve this question

closed as not constructive by Caleb, gnat, Jimmy Hoffa, ChrisF May 14 '13 at 22:00

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

21  
You might not use it commercially, but your programming in other languages will improve because of it. –  Alan Pearce Dec 11 '10 at 14:12
5  
@Alan, how EXACTLY does Haskell help? Surely writing Haskell code in C# must be a bad idea ... –  Job Dec 11 '10 at 14:18
8  
I have heard it helps improve. But how? –  Jason K Dec 11 '10 at 14:23
5  
Also for me there are some languages then when I see them on a CV make me think "Hey this guy may be interesting". Haskell is one of them, others include (Clojure, Erlang, F# and any lisp) –  Zachary K Nov 3 '11 at 8:36
4  
If you're not willing to learn a cool new language to help you grow and develop your skills when you're not even out of college yet... maybe give yourself some time to think if this is really the right career for you. –  Alexander Corwin Mar 16 '12 at 14:50
show 5 more comments

13 Answers 13

Disclaimer: I don't know Haskell.

First of all, learning another programming language, assuming you have the time, is always a good idea. It is especially true, if the language uses a programming paradigm that you are not familiar with.

Haskell is a purely functional programming language, and my guess is you may not be familiar with functional programming, even though Python also supports it. Learning functional programming will expand your horizons. You will really understand recursion. You will understand the simplicity, the elegance, and the scalability that functional programming can provide. I suggest you google MapReduce, which is what allows Google's search engine to run across zillions of servers to handle bazillions of search requests, to see what the practical applications of functional programming might be.

The reason I feel qualified to tell you all this, even though I do not know Haskell, is that I had to take a course called "Programming Language Concepts" during my first year of college, which used Scheme, another purely functional language. Scheme looked very strange at first, but I have come to appreciate its elegance, and I think that made me a better programmer.

share|improve this answer
7  
Scheme and Lisp rock, I have The Little Schemer book sitting on my desk at the moment. Also, good answer. +1 –  Orbling Dec 11 '10 at 15:04
9  
+1. But something to note: Scheme isn't a purely functional programming language, because of set! and friends. –  Joe D Dec 11 '10 at 18:13
4  
This is a good case for learning a functional programming language. But Haskell offers even more than this: You get this totally awesome type system (which will propably leave make you despise more conventional static type systems), laziness (until you used haskell or python's generators, you can't appreciate this sufficiently), monads (simply mind-blowing, and I also imagine they come handy in languages that are bendable enough to support acceptable syntactic sugar for them) and the most beautiful syntax evar. –  delnan Dec 11 '10 at 23:50
1  
@Joe D: In my programming languages class, the Professor banned the use of any functions with an ! in the name. I remember when I was doing the assignments that using set! would have made them much harder. –  jsternberg Dec 17 '10 at 3:19
1  
@jsternberg: How do you do assignments without set! ?!? ;-P –  Macke Nov 2 '11 at 22:28
show 5 more comments

Learning Haskell will expose you to pure functional programming.

If you have not yet had decent exposure to that paradigm then it will teach you new methods of approaching software problems. All programmers should know at least one language from each paradigm, in order that they can then see a problem from all the angles.

Is Haskell used much in industry?

No. It is more familiar to academics, it could be used more, but never has been.

Want to learn something very similar that is/will be?

Learn F#, it's more or less based on Haskell, with some imperative bits thrown in and is a first class language in the .NET framework as of Visual Studio 2010.

share|improve this answer
3  
You cannot get anything done without side effects. Pure functional programming can do nothing but make CPU hot. –  Job Dec 11 '10 at 14:54
5  
@Job: Although Haskell must contain impure parts to actually get anything done, Haskell makes a clear, type-level distinction between pure and impure parts. If a function's type does not contain the word Io anywhere then neither it, nor any of the functions it calls, interacts with the outside world -- simple as that. –  j_random_hacker Dec 11 '10 at 15:25
9  
@Job Haskell is pure but can track side effects with monads; do your research. –  alternative Dec 11 '10 at 15:38
2  
+1 for F# since it's used in industry. –  Amir Rezaei Dec 11 '10 at 19:16
3  
Isn't F# more based on OCaml than Haskell? –  mipadi Dec 13 '10 at 16:18
show 12 more comments

Haskell is certainly used in the industry, but not as commonly as C# or Java, to say the least. So if you just want to learn it to help you get a job, it might be a waste of time.

A better reason for learning Haskell is that you will become familiar with functional programming in the process. This will happen at a much faster rate with Haskell than with another functional language like F# or Scala, because the other languages will still allow you to write procedural and OO code. Haskell has a construct (do) that allows you to write what looks like imperative code, but that's just syntactic sugar. The compiler converts that to chained function calls.

Another feature of Haskell is the type system. It is statically typed, but you can create your own types and operators easily, and people who are familiar with Haskell can write very expressive types, and use them to make things that shouldn't happen not even compile.

You can then apply the techniques learned, where appropriate, for the rest of your career. This is not to say that you'll write Haskell code in C#. Instead you'll have the concepts you learned in your toolbox to use when needed.

share|improve this answer
    
+1 For illustrating why the functional paradigm is more rapidly absorbed within Haskell as opposed to a multi-paradigm alternative. (F#, JavaScript, etc). –  Orbling Dec 11 '10 at 15:05
    
I don't know that learning Haskell is a complete waste from a career perspective. Lots of companies will give bonus points for knowing it even if they don't use it because it shows passion for programming and a certain level of intelligence. –  Jason Baker Jan 22 '11 at 18:51
add comment

I'm currently learning Haskell, because I want to write better JavaScript, Groovy, and Python.

Haskell forces you to think functionally, as you simply cannot rely on changes of state in solving problems.

Many modern programming languages allow for functional programming, but most programmers don't take advantage of these features, as they think in the C++/Java imperative/object-oriented paradigms.

Learning new languages will usually be for the purpose of changing the way you think, and Haskell is a good one for thinking functionally.

share|improve this answer
4  
+1 For mentioning JavaScript, probably the most widely used functional language (in a functional way), particularly since jQuery came along. –  Orbling Dec 11 '10 at 15:06
2  
And it teaches all sorts of neat things along the way, like currying/"schoenfinkelisation". –  Frank Shearar Dec 11 '10 at 16:48
    
@Frank: also "partially applied functions" (scala lingo) –  André Laszlo Dec 17 '10 at 3:56
    
@André I think that's actually the more correct terminology. But "schoenfinkelling" sounds a lot cooler than "partially applying a function"! –  Frank Shearar Dec 17 '10 at 8:37
5  
@StasM I agree, state is useful. But it can cause undesirable complexity, it can make testing difficult, etc. So learning how to avoid it completely can help you to see when you might choose to avoid when it is available. –  Eric Wilson Jul 27 '11 at 9:50
show 1 more comment

It will help improve your general programming skills

I dabbled with Haskell, since then I've played with other functional languages such as F#.

And it is absolutely true that being exposed to a functional way of thinking has a positive effective on you.

Case in point:

After dabbling in functional style of coding I've notice that it's improved my general style of coding. I think of problems and break them up into distinct functions. I can then compose them up like Lego to solve bigger problems. Its easier to follow, its far far less verbose than how i use to code.

share|improve this answer
    
"I think of problems and break them up into distinct functions. I can then compose them up like Lego to solve bigger problems. Its easier to follow, its far far less verbose than how i use to code.": Same experience here. Functional thinking is really powerful. –  Giorgio Oct 5 '12 at 22:20
add comment

Absolutely.

Learning Haskell is mind-expanding. It forces you to think in a completely different way about programming and will give you greater insight into programming in general.

Also, as we make the shift to horizontally-scaled multicore systems, it's extremely likely that functional programming will become more relevant to a typical programmer's work. It may not be Haskell that wins among the functional languages out there, but languages very like Haskell are likely to become more professionally relevant as multicore CPU's require more and more concurrency from applications.

Big caveat: Learning Haskell may make you less happy with conventional imperative programming, of which most programming work consists these days. So if you decide to learn it, be on your guard for that kind of thing. :)

share|improve this answer
    
++. its worth noting that haskell provides a multitude of techniques not just the exploitation of multicore at a runtime level, but for thinking about parallelism and concurrency. –  brad clawsie Dec 12 '10 at 8:02
7  
+1 For the "Big caveat". –  Orbling Dec 17 '10 at 2:24
1  
+1 For the "Big caveat". I totally agree. +1. –  Giorgio Aug 12 '12 at 22:20
add comment

YES YES and YES

practically EVERY substantial trend in cutting-edge computer science is being manifested and tinkered with by haskell people. i'm not just talking functional programming...parallelism, STM, concurrency, type systems...you name it, they're probably doing it...often first!

and that isn't even addressing the mind-altering core features that haskell has had forever...laziness, partial evaluation, a type system that isn't just there to make programs faster, etc etc

warning: once you pick up the crack pipe, its hard to put down, and you'll develop a well-justified snobbery over lesser, ill-conceived languages.

share|improve this answer
    
Don't forget QuickCheck! that thing blows my mind. But it seems that all the cool stuff happening these days starts with Haskell then leeks out to the rest of us. So that alone would make it worth learning. –  Zachary K Nov 3 '11 at 8:34
    
The best answer so far. Yeah! Haskell is were all the cool things are. –  kadaj Jan 31 '12 at 15:52
add comment

Haskell is definitely worth your time. Personally, I have only spent two or three weekends with it and haven't written any programs that did more than a few functional equivalents of "hello, world!".

However, those brief flirtations profoundly changed the way I program in other languages. My primary field of work is scientific computation and data analysis using R and Python. Before I shacked up with Haskell for a weekend, my programs were long 300+ line blocks of code litered with if statements and do loops. Now, most everything I do is composed out of 20-50 line functions lazily applied over data using functional constructs such as map, filter and reduce. The payoffs are amazing:

  • My code is easier to understand and to maintain.

  • My code is capable of dealing with huge datasets while retaining a small memory footprint through the use of lazy functional applications.

  • Replacing do loops with functional constructs (where appropriate) has dramatically reduced the marginal cost of parallelizing algorithms that need extra computational power. This is because programming functionally provides built-in management of side-effects that parallelization a pain.

To summarize, spending a couple of weekends playing with Haskell was probably the second best investment I ever made in my programming toolkit behind the time I spent teaching myself version control. So go ahead and Learn You a Haskell for Great Good this weekend!

share|improve this answer
1  
Pleasing to read, it's nice to hear actual tales of the language getting great universal results, not just in its own domain. The effect of learning that language was very similar to me, some code just lends itself very well to the functional style. R positively needs it as it is a partially vector-based language, with strong functional style. –  Orbling Jan 8 '11 at 1:04
    
@Orbling Agreed. It wasn't until I played with Haskell that I started using R's apply functions with a vengeance. I had been cheating myself out of most of R's data processing power until that point. –  Sharpie Jan 8 '11 at 1:07
    
Aye, I can imagine. Fortunately I was blessed to learn Haskell a good year before R, and learn APL (another vector-based language) a bit before Haskell, so never fell down the imperative route of R. –  Orbling Jan 8 '11 at 1:28
add comment

Yes, Haskell is worth learning. It's probably the "purest" functional programming language and you will learn a lot. I learnt it a few years back and greatly enjoyed the experience. It literally forces you to think in a functional way.

However I never got to use Haskell commercially or for a "serious" project. I doubt you will use it much either unless you are either an academic or in one of the few industry niches where Haskell is actively used.

If you want a language that has the best of Haskell and is also "pragmatic" in the sense that it is well-suited to getting jobs / real worth development I'd recommend Clojure, which is:

  • A functional programming language inspired by both Lisp and Haskell. Like Haskell it emphasises immutability, has lazy evaluation and has a purely functional core library. Unlike Haskell it is not totally pure, and allows mutation/side effects under certain circumstances. Arguably that makes it a bit more "pragmatic".
  • A Lisp, which provides a profound learning experience in its own right. Worth reading the short essay "beating the averages" by Paul Graham.
  • Part of the Java/JVM ecosystem, so you have access to the broadest possible range of (mostly open source) tools and libraries. This makes it pretty easy to apply in a commercial setting where the Java platform is still No.1.
  • Probably the best language for concurrency right now thanks to a novel approach to identity and state supported by Software Transactional Memory (STM). See this video: http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey
share|improve this answer
add comment

Yes.

It is very unlikely that you will get a chance to use Haskell on the job, so there is no direct career benefit. It's one of the most popular non-mainstream languages out there, but it's still non-mainstream. For any one Haskell job, there's probably a hundred of PHP, Java, C#, and C++ each.

The benefit comes from Haskell being different from anything you probably know, while still exposing an incredible amount of elegance. Just like any new programming language you learn, Haskell will open up your mind to new ideas and ways of thinking, and you will be a better programmer for it.

share|improve this answer
add comment

You asked from a career perspective so I will answer from that perspective. First when people graduate from college they are competing for entry level jobs with a bunch of other people who took approximately the same classes. So the resumes are all very simliar. You need something to make you stand out and Haskell can be one of those somethings.

However, and this is a big however, if you don't have the minimum stuff to get you hired, then get those first. Many jobs are Java-based or C#-based, be proficant in one of those first. Most business programming jobs do a lot of database work as well, so get proficient in SQL (or at least in some ORM, but SQL is better as it allows you to use any ORM more proficiently when you understand SQL). Then go for extras like Haskell.

And sometimes when a language is not commonly used, it opens up doors that would otherwise be closed to you. But usually only if you have the basics too.

share|improve this answer
add comment

Anything with blocks/lambdas/etc will get you thinking like this. Some languages provide better constructs for doing this practically and pragmatically and gracefully. Learn Ruby. Way more practical, great object model and all the functional & meta you can eat.

share|improve this answer
add comment

Yea well, interesting reading everybody’s comments… I also as did another blogger came from IU and had scheme in probably ¼ of all my compute classes.

My answer to your question “primarily from a career point of view”, is probably yes only because functional languages, as strange as they may first look, can be understood from a high level very quickly. I personally would argue that spending too much time on dissecting functional languages is not too dissimilar from a chess fanatic banging their head on the table as he attempts to look 8 moves ahead; things start to get blurry! Now if you are in college different story! Go for it, have fun with it, if you’re like many of my college peers at the time, it will consume your inner dementia! Note that there are few and far between corporations that use functional languages in their business! I have never used one in my career. And even worse, I think I have programmed recursive procedures only about three times! (Sad indeed)…

Learning about functional programming does give you a different perspective on programming in general which is always a great thing! So why not! I’ve found it useful indirectly, in particular I’ve always tried to keep my object oriented objects small somewhat functional, and easy to manage all because of my understanding of functional programming.. If you struggled getting A’s in your classes like me, keep Aspirin around! If you are a bright kid, you may find it pleasing and relatively easy!! My head still hurts from all the years at IU and I’m 50 years old !! LOL..

share|improve this answer
add comment

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