Hello Andrew.
How would you recommend to learn Redux for someone who has small amount of experience in Functional Programming?
I comfortable with React and now I want to use Redux with it, because approach I currently apply uses events to notify React components when my models have changed, kinda like Pub/Sub bus. What I've noticed this approach doesn't scale very well and it's hard to reason about code when code base becomes bigger. I've read few articles about Redux and I think it can help me.
I have a lot of experience with OOP code. I worked with Ruby/Rails and focused a lot on good object oriented design.
I don't have a lot of experience with functional programming in general. I have some experience with Scheme, mostly for learning recursion.
I kinda understand lambda calculus and ideas behind it, I even wrote Applicative Y-Combinator using things like Tennent's Correspondence Principle and so on.
Also I have some experience with Haskell. I know what "Currying" and "Partially applied function" concepts mean and what they for.
For me it looks like that Redux is heavily based on ideas from Functional Programming.
I think my question consists from 2 parts:
What learning path would you recommend in order to be comfortable with ideas on which Redux based on?
What knowledge/skills should I have in order to be really comfortable working with Redux and build applications using it?
I know I wrote a lot here, but I think it will help you give me more specific advice using provided information.
If you thinking that there is some programming language where some particular ideas expressed better, feel free to mention it. I've found that sometimes it's very beneficial to get to roots of some idea (yes, I do have a lot of free time). For example learning Smalltalk made me a better Ruby developer and OO developer in general.
Thank you a lot for any suggestion/advice :-)