After reading through some of the other comments, these things come to mind: 1. I agree, after learning Common Lisp for a few days, I was like "What on earth will I ever use this for?" 2. After spending a couple of days with Clojure, I was like, "Oh man, I wish I could use this to write ALL of my code!" So if you're going to look into it, I can personally recommend Clojure for the following reasons: 1. It's fun (at least in my opinion) 2. It will absolutely change the way you think about programming (even in OO contexts) 3. It's a JVM language, so you can use it along with Java code (or Scala, or Groovy, or ...) 4. You have the functional paradigm (it's a LISP dialect) but you can also do object-oriented things (it runs on the JVM) if that makes sense for the situation. 5. It IS in active use in a number of projects today (though I can't remember them off the top of my head; that's fine, go ahead and call me out for that; or better yet, just google it) 6. It has an active user community. I've always found answers to my questions on Stack Overflow. As for why to learn functional programming in general, I agree with one of the posters who said that it increases his productivity. In my experience, functional programs are easier to reason about. If you can break your entire program down into a set of small functions, you can test each of the functions individually. (If you put in the same arguments you should always get the same result.) If you can determine that each of your smaller functions is logically correct, then it becomes easier to reason that your full program is logically correct. And if your program has fewer bugs, you won't spend as much time debugging. Thinking functionally requires me to think more about what I want to DO, and much less about HOW I want to do it. (I know everyone says that about functional languages, but it is true in my experience!) I have also found that my programs in Clojure are more concise than what I write in other languages. This is partially due to the syntax (come on, guys, the parentheses really aren't that bad; Emacs formats it REALLY nicely) but it is also due to the functional paradigm---it just forces you to think straight to the point of what you're trying to do. Having a REPL (Read-Eval-Print Loop) is EXTREMELY helpful in learning a new language. Try stuff out in real time in the interpreter (just like with Python, etc.) Decreases the amount of time to master a given concept, in my opinion. Because of this
U
User 8162794
@User 8162794