My personal collection of good reads on typed functional programming. PRs are highly appreciated though not 100% guaranteed to be merged, just to keep the list opiniated π
- π Basic Type Level Programming in Haskell
- π Fun with Typed Type-Level Programming in PureScript
- π Simple Parameteried Queries with Row Union
- π Parsing type-level strings to extract types
- π Well-typed printfs cannot go wrong
- π Kinds and Type Level Programming
- πΉ Making sense of the Haskell type system by Ryan Lemmer
- π Instances and Dictionaries
- π How do type classes differ from interfaces?
- π Type classes and instances are pattern matching for types
- π Lifts for free: making mtl typeclasses derivable
- π PureScript: Instance chains and Overlapping Instances
- π On Type Class Instance Selection
- πΉ PS Unscripted - Code Reuse in PS: Fns, Classes, and Interpreters <- Cool introduction to type class
- π Existential quantification (by Mark Karpov)
- π Existential types and data abstraction (by Ivan Veselov)
- π Existential Types in Scala
- π Existential type (Haskell wiki)
- π Existential Quantification Patterns and Antipatterns
- πΉ Existential Types β Make OOP Great Again! by Julien Richard Foy
- π Higher-Ranked Types
- π Rank-N types, a simple DB example
- π Rank-2-Types and the Scope -- See Nate's fabulous answer
- π 4 Days of GHC Extensions: Rank N Types
- π Functional dependencies (Haskell Wiki)
- π Haskell/Advanced type classes
- π Functional Dependencies (Jordan Martinez)
- π 24 Days of GHC Extensions: Functional Dependencies
- π Functional Dependencies & Type Families
- π Fun with Funtional Dependenies or (Draft) Types as Values in Static Computations in Haskell
- πΉ Mark Jones: Language and Program Design for Functional Dependencies
- π Refine, fine, fine
- π Why Types Matter - A type-safe world
- π Thinking in Types
- π No, dynamic type systems are not inherently more open
- π PureScript GADTs Alternatives β Recap
- π Haskell's kind system - a primer
- πΉ Functors of the World, Unite!
- πΉ Values, Types & Kinds - Dylan Just
- π Functors, Applicatives, And Monads In Pictures
- π Understanding Functor and Monad With a Bag of Peanuts
- π Understanding contravariance
- π Understanding profunctors
- πΉ George Wilson - Contravariant Functors: The Other Side of the Coin
- πΉ Phil Freeman - Fun with Profunctors
- πΉ George Wilson - The Extended Functor Family
- π Using IxMonad to enforce good hamburger building in Purescript
- π Demystifying
MonadBaseControl
- π Comonads are objects
- π Finite-State Machines, Part 1: Modeling with Haskell Data Types
- π A Simple Reader Monad Example
- πΉ PS Unscripted - Free From Tree & Halogen VDOM <- Best explanation about Free Monad
- πΉ Free as in Monads (in Scala)
- πΉ A Series of Unfortunate Effects - Robert M. Avram
- πΉ PS Unscripted - Comonads for UIs
- πΉ John Hughes - Monad and all that <- Deep dive into Monad
- πΉ Vincent Marquez, Index your State for Safer Functional APIs
- πΉ A roadtrip with monads: from MTL, through tagless to BIO - PaweΕ Szulc
- πΉ Monad Transformer Workshop
- π Three Layer Haskell Cake
- π MonadIO Considered Harmful
- π Invert Your Mocks!
- π The ReaderT Design Pattern
- π Type Safety Back and Forth
- π Parse, donβt validate
- π Algebraic blindness
- π On Ad-hoc Datatypes
- π An opinionated guide to Haskell in 2018
- π Tagless Final Encoding in Haskell
- π Introduction to Tagless Final
- π Mocking Effects Using Constraints And Phantom Data Kinds
- π Functional architecture is Ports and Adapters
- π Polysemy is fun!
- π safe-money
- π Using types to unit-test in Haskell
- πΉ Painless software development with Haskell - PaweΕ Szulc
- πΉ Matt Parsons - Exceptional Haskell
- πΉ Next Level MTL - George Wilson
- πΉ Railway oriented programming: Error handling in functional languages by Scott Wlaschin
- πΉ Domain Modeling Made Functional - Scott Wlaschin
- π Functional Reactive Programming (Introduction)
- π Let's reinvent FRP
- π PureScript: UI driven by Finite State Machines and Event Streams
- πΉ Peeling the Banana: Recursion Schemes from First Principles - Zainab Ali
- πΉ George Wilson - An Intuition for Propagators
- π Practical Profunctor Lenses & Optics In PureScript
- π Lenses for the Mere Mortal: PureScript Edition -- FREE book/pdf
- πΉ Sara Fransson: Functional lenses through a practical lens
- π Deriving via
- π Mirror Mirror: Reflection and Encoding Via
- πΉ DerivingVia: How to Turn Hand-Written Instances into an Anti-Pattern
- π A reckless introduction to Hindley-Milner type inference
- π An Explanation of Type Inference for ML/Haskell
- π Practical type inference for arbitrary-rank types
- π Write You A Haskell
- π Types and Programming Language - Discussion Group
- πΉ Type Inference from Scratch: A Workshop with Christoph Hegemann
- πΉ Christoph Hegemann, TYPE INFERENCE FROM SCRATCH
- πΉ Introduction to Type Inference
- πΉ How to Translate PL Judgements into Code
- πΉ Intro to PLT - Dave Laing
Not necessarily typed FP, but they are great channels to learn FP
- ICFP Video
- PureScript Community
- LambdaConf
- Haskell at Work
- Boston Haskell
- Bay Area Haskell
- Monadic Warsaw
- Lambda World
- Brisbane Functional Programming Group
- Curry On!
- FunctionalTV
- Edward Kmett
- Alexis King
- Iceland Jack
- Type Classes
- Andres LΓΆh
- Vanessa McHale
- Matt Parsons
- Monoid Mary
- sara :: forall a. a
- Taylor Fausak
- Phil Freeman
- Nathan Faubion
- FP Complete
- Vaibhav Sagar
- Sukant Hajra
- Sofia
- Liam Goodacre
- RΓΊnar
- Alejandro Serrano
- Erik Meijer
- Bartosz Milewski
- hdgarrood
- Impure Pics
- Chris Martin
- Martin Odersky
- Isaac
- Gary Burgess
- Soham Chowdhury
- PaweΕ Szulc
- William J. Bowman
- Igal Tabachnik
- Brian McKenna
- Josh Burgess
- paulette d. koronkevich
- Stephanie Weirich
- Alex Berg
- Arian van Putten