On Egghead.io there’s a free course available on functional programming. Your teacher is Professor Frisby, who is in fact a hedgehog. Yup, you’ve read that right. The tempo of the course is quite fast, so you might have to, like me, pause or rewatch the videos to get the most out of it.
This course teaches the ubiquitous abstractions for modeling pure functional programs. Functional languages have adopted these algebraic constructs across the board as a way to compose applications in a principled way.