Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This question is similar to Choosing a functional programming language.

I want to learn functional programming but I am having troubles choosing the right programming language. At the university I studied Haskell for 2 months, so I have a basic idea of what a functional language is.

I have read a lot that functional programming change your way of think. I started to take a look to Clojure, which I like for several reasons(code as data, JVM, etc). What stops me from continue learning Clojure is that it is not a pure functional language and I am afraid of ending up using imperative/OO style.

Should I learn Haskell or keep on learning Clojure?

Thanks in advance

P.D: I am open to any other language.

share|improve this question

closed as off topic by Oded, ChrisF Apr 7 '12 at 15:30

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

This should be closed. "What should I learn next" questions are made explicitly off topic in the FAQ. – Kris Harper Apr 7 '12 at 15:02
@root45 hmm, true. +1 – c69 Apr 7 '12 at 15:04
Ok, Sorry about that. My mistake. – Oni Apr 7 '12 at 15:09
up vote 2 down vote accepted

If you've tried both and prefer Clojure, stick with Clojure. Idiomatic Clojure is very functional, so even if your code isn't "pure" you will be getting the benefits of learning how to approach a problem from a functional perspective.

Also, there is nothing wrong with going back to Haskell after you have some Clojure experience. They are both great languages.

On a side note, you should check out if you haven't already. Its a fun way to learn the language.

share|improve this answer
+1 for – jamesj Apr 7 '12 at 15:10

It depends. What are your goals for learning a language ?

If you want to find a job easily and start earning money now - you should learn JavaScript. Its the assembler of the web. Language, which is used in browsers, apps, os scripts, server engines. Its Functional and its Object-oriented at the same time. Its very flexible, and "with great power comes great responsibility", so in order to write complex solutions in it - you need high level of general programming skill.

If you want to improve your skill with functional programming or don't like curly brackets and other "warts" like absence of tail-recursion, generics and other cool things. You can stick to Clojure, Scheme or Haskel. (and eventually you might earn more money, than a javascript guys do)

Remember - language is just a tool.

share|improve this answer

If you want to learn a functional programming language, just for the purpose of learning functional programming, I would definitely suggest continuing with Haskell. Haskell is one of the most popular and well supported languages of that type. It also has a great tutorial, LYAH: Which you can read online, completely free or buy.

share|improve this answer

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