The list has evolved into a collection of topics that are not limited only to Haskell, but to other functional languages and mathematics as well. It's also used as a list of articles/posts I want to read.
Topic | Familiar with? | Resources |
---|---|---|
ReaderT | ✔️ | 1, 2 |
StateT | ✔️ | 1, 2, 3 |
Tagless Final | ✔️ | 1 |
Monad transformers | ✔️ | 1, 2, 3, 4, 5 |
ReaderT design pattern | ✔️ | 1 |
Data.Functor.Compose | ❌ | 1, 2 |
Parser combinators | ✔️ | 1, 2, 3 |
Free | ❌ | 1, 2, 3, 4, 5, 6, 7 |
Freer | ❌ | |
Comonad | ❌ | |
Coalgebra (F-Algebras) | ❌ | 1 |
Recursion schemes | ❌ | 1, 2 |
Functor family (Strong, Choice etc) | ❌ | 1, 2 |
Functional Dependencies | ❌ | |
Epi- and monomorphism | ❌ | 1 |
GADTs | ❌ | |
Type families | ❌ | |
Algebraic effects | ❌ | |
Typeable/Typerep | ❌ | 1 |
Transducer | ❌ | 1, 2, 3 |
DerivingVia | ❌ | 1 |
Trampolines | ❌ | 1, 2, 3 |
Profunctor Optics | ❌ | 1, 2, 3, 4, 5, 6 |
Classy Prisms | ❌ | 1 |
Indexed Monads | ❌ | |
Codensity | ❌ | |
EffCategories | ❌ | 1 |
Yoneda | ❌ | |
What's the problem? | ❌ | 1 |
"If everything is an expression, everything has a type" - Clément Delafargue - TDD as in Type-Driven Development
"It takes a lot of programming to get back from a little programming that deviates from mathematical logic." - Xavier Leroy
"The way I think about this is that as programming languages evolve things that used to be side effects become implementation details of the language. One example of this is manual memory management which evolved into garbage collection" - Gabriel Gonzalez
"When people say "but most business logic bugs aren't type errors" i just want to show them how to make bugs into type errors" - Matt Parsons
"If your code feels complicated to write, it's more often than not that your types are not fit representation of your data" - Michel Belleville
"The design of the data structures is the central decision in the creation of a program. Once the data structures are laid out, the algorithms tend to fall into place, and the coding is comparatively easy." - Brian W. Kernighan and Rob Pike - "The Practice of Programming"
"Making illegal states unrepresentable is all about statically proving that all runtime values (without exception) correspond to valid objects in the business domain." - John A De Goes
"GOTO was evil because we asked, 'how did I get to this point of execution?' Mutability leaves us with, 'how did I get to this state?'" - Jessica Kerr