Links and external resources
Functional Programming
- Category Theory for Programmers
- Functional Programming For The Rest of Us
- Parallelism and concurrency need different tools
- What the Heck are Algebraic Data Types? by Daniel Eklund
- Functors, Applicatives, And Monads In Pictures
- A practical introduction to functional programming
- Functional Programming Basics by Robert C. Martin (Uncle Bob)
- The Downfall of Imperative Programming
FP Papers
- Why Functional Programming Matters (J. Hughes The University, Glasgow, 1990)
- Monoids: Theme and Variations (B. Yorgey, 2012)
- The Essence of the Iterator Pattern (J. Gibbons and B. Oliveira, Oxford University Computing Laboratory)
- Applicative programming with effects (C. McBride, University of Nottingham - R. Paterson, City University, London)
- Stack Safety for Free (Phil Freeman, 2015)
- Stackless Scala With Free Monads (Rúnar Óli Bjarnason)
- Type Classes as Objects and Implicits (B. Oliveira, A. Moors, M. Odersky)
Scala
Books
- Programming in Scala (2016) by Martin Odersky, Lex Spoon, and Bill Venners
- Functional Programming in Scala (2014) by Paul Chiusano and Runar Bjarnason (The **Red Book**)
- A companion booklet to "Functional Programming in Scala" (PDF) by Rúnar Óli Bjarnason
- Functional Programming, Simplified (2017) by Alvin Alexander
- Functional Programming for Mortals with Scalaz (2018) by Sam Halliday
- Scala with Cats
- The Type Astronaut's Guide to Shapeless
Readings
- Scala's Types of Types
- Typeclasses in scala - Illustrated with cats
- Algebraic Data Types in Scala by Alvin Alexander
- More on Sealed Traits in Scala
- Generalized type constraints in Scala (without a PhD)
- First steps with monads in Scala
- Demystifying the Monad in Scala
- Stackless Scala
- Rethinking MonadError
- Free monads - what? and why?
- Free Monad examples
Cats and Shapeless
- Scala Cats library for dummies
- Cats Infographic
- Overview of free monad in Cats
- An IO monad for Cats
- ScalaFP: Firsthand With Scala-Cats
- Shapeless for Mortals (2015) by Sam Halliday (Talk)