Or in Ruby, while you still have to create classes, you could explore writing pure functions and not changing state.
Personally I feel like there's too many stumbling blocks in both those languages (unless you've got Lisp experience or are really into mathematics), and just getting used to the concepts in a more familiar environment will be more useful than scratching your head about monads.
C and Python are the languages in which I've done most of my work (I'm still a student). In fact I didn't look to see how's FP done in those languages with which I'm most familiar and that does sound like good advice. Thanks!
For a student, I would recommend Racket over Haskell and Clojure because:
1. It is very easy to set up a batteries included development environment.
2. The community is dedicated to teaching students functional programming principles.
3. The Racket ecosystem provides tools for learning other programming paradigms including: lazy, statically typed, declarative, reactive, meta-programming, etc.
4. The sweet spot of Clojure is professional developers. There is often an assumption of foundational knowledge of the JVM [or Javscript in the case of Clojurescript].
5. The sweet spot of Haskell is programmers with a strong computer science background. The literature and discussion tends to be more toward the academic journal paper end of the spectrum.
It depends: what do you want to build? I like Clojure a bit more, and for me the JVM + ClojureScript are a deal. I like Haskell's syntax a bit less, though Haskell types rock; the ecosystem is less developed as you cannot just import a gazillion of mature Java libraries.
5 comments
[ 1.6 ms ] story [ 19.3 ms ] threadFor example, this guide in JavaScript is pretty good: https://github.com/MostlyAdequate/mostly-adequate-guide/
Or in Ruby, while you still have to create classes, you could explore writing pure functions and not changing state.
Personally I feel like there's too many stumbling blocks in both those languages (unless you've got Lisp experience or are really into mathematics), and just getting used to the concepts in a more familiar environment will be more useful than scratching your head about monads.
1. It is very easy to set up a batteries included development environment.
2. The community is dedicated to teaching students functional programming principles.
3. The Racket ecosystem provides tools for learning other programming paradigms including: lazy, statically typed, declarative, reactive, meta-programming, etc.
4. The sweet spot of Clojure is professional developers. There is often an assumption of foundational knowledge of the JVM [or Javscript in the case of Clojurescript].
5. The sweet spot of Haskell is programmers with a strong computer science background. The literature and discussion tends to be more toward the academic journal paper end of the spectrum.
Good luck.