As you start to look at these concepts, and Ramda, I highly recommend playing with ramda-fantasy[0] and the fantasy-land[1] spec that it implements. Super useful, and really made this sort of functional programming "click" for me (and, has really cleaned up some abstractions in a couple production projects, too!)
E.g. `map(x => x*2, [1, 2, 3])` (no need to write `R.map`)
[0] https://github.com/hemanth/ramda-repl