I think every programmer should spend time doing fp. It encourages/reinforces many best practices like immutability, coding without side effects, bottom-up abstractions, and higher order functions.
I did some Haskell programming in college. After I didn't do much fp until I started programming in Lisp a few years ago which I found much more satisfying to program in than Haskell. I started with clojure which is a fantastic dialect with lots of active developers and can be transpiled to javascript with clojurescript. Later I started writing toys in Chez Scheme.
Lisp is incredibly simple syntactically and you can write a naive Lisp interpreter in 10s of lines of code yet you can trivially write DSLs in Lisp (ie the most powerful abstractions a programming language can offer). Pound for pound, it's the best programming language imo and it's an fp.
Most modern programming languages allow you to do fp in them. They don't enforce functional purity, or give you all the latest fancy named abstractions, but fp is more about a way of programming than it is any language or specific abstraction imo.
Thanks @k00b. That's helpful. I've been fascinated by the concepts but the work I've done has been so far away from FP until now. That said the concepts I am learning about in FP content are things I have been doing for years but this is just way more systematic.
reply
That said the concepts I am learning about in FP content are things I have been doing for years but this is just way more systematic.
I have a similar feeling. I’ve noticed a lot of overlap with techniques I use and those of FP, without having much of any structured FP experience. I think using React got me a lot of if, with the pattern of props being read only. I tend to think of every function as a transformer function now. And I love chaining array method calls together :D
reply