A structured set of materials on how to build real-world applications in Haskell.
- Books on Software Design and Architecture in Haskell
- Application Architectures
- Design Approaches and Design Patterns
- Design Principles
- Philosophy
- Best Practices & Guidelines
- Showcase Projects & Code Organization Samples
- Haskell in Production. Success Stories, Experience Reports
- Talks
- Haskell Ecosystem and Accessibility
- Misc
- Functional Design and Architecture (Manning Publications, 2024) | Alexander Granin
- Functional Design and Architecture (Early Edition, self-published, LeanPub, 2020) | Alexander Granin
- Pragmatic Type-Level Design (self-published, LeanPub, 2025) | Alexander Granin
- Production Haskell | Matt Parsons
- Algebra-Driven-Design | Sandy Maguire
- Practical Haskell. A Real World Guide to Programming | Serrano, Alejandro
- Real World Haskell | Bryan O'Sullivan, Don Stewart, John Goerzen
- Up-to-date Real World Haskell | Bryan O'Sullivan, Don Stewart, John Goerzen, Tae Sandoval
- Haskell Design Patterns | Ryan Lemmer
- The Simple Haskell Handbook | Marco Sampellegrini
- Haskell And Yesod | Michael Snoyman
- Three Layer Haskell Cake | Matt Parsons
- A Modern Architecture for FP | John A De Goes
- Modern Functional Programming: Part 2 | John A De Goes
- Anatomy of a Haskell-based Application | abailly
- Architecture of a Real World Haskell Application | Michael Oswald
- Functional architecture - The pits of success | Mark Seemann | NDC Sidney 2016
- Hierarchical Free Monads: The Most Developed Approach In Haskell (And The Death Of Final Tagless) | Alexander Granin
- Functional Declarative Design: A Comprehensive Methodology for Statically-Typed Functional Programming Languages | Alexander Granin
- Hierarchical Free Monads and Software Design in Functional Programming (Talk) | Slides | Alexander Granin | FunctionalConf 2019, Bangalore, India
- Hexagonal Architecture and Free Monad: Two related design patterns? | Quentin Duval
- Large-scale design in Haskell? (SO question)
- Why free monads matter | Gabriella Gonzalez
- Free monads in 7 easy steps | joa
- A Modern Architecture for FP | John A De Goes
- Building network actors with Node Framework | Alexander Granin | Note: a Free monadic architecture is described there.
- Automatic White-Box Testing with Free Monads | Alexander Granin | Showcase
- Hierarchical Free Monads: The Most Developed Approach In Haskell (And The Death Of Final Tagless) | Alexander Granin
- Hierarchical Free Monads and Software Design in Functional Programming (Talk) | Slides | Alexander Granin | FunctionalConf 2019, Bangalore, India
- Strict typing fun example — Free Monads in Haskell | Kamil Ciemniewski
- Free Monads: from the basics to the implementation of composable and effectful stream processing | Quentin Duval
- What does Free buy us? | Matt Parsons
- Combining free monads in Haskell | Mark Seemann
- Free monad considered harmful | Mark Karpov
- What is the “Free Monad + Interpreter” pattern? (SO question)
- A Practical Introduction to Freer Monads (Eff) | Keagan McClelland
- Tagless Final Encoding in Haskell | Juan Pablo Royo
- Introduction to Tagless Final | Vasiliy Kevroletin | Serokell
- Reducing boilerplate in finally tagless style | Roman Cheplyaka
- Tagless Final Encoding of a Test Language | Oskar Wickström
- Eff to the Rescue! | Monday Morning Haskell
- Freer doesn’t come for free | Eric Torreborre
- Serving HTTP Content with Fused-Effects | Patrick Thomson
- A Practical Introduction to Freer Monads (Eff) | Keagan McClelland
- The ReaderT Design Pattern | Michael Snoyman
- The ReaderT design pattern or tagless final? | Magnus Therning
- Capability: The ReaderT Pattern Without The Boilerplate | Andreas Herrmann, Arnaud Spiwack | Tweag.IO
- The Service Pattern | Simon Meier
- Haskell Design Patterns: The Handle Pattern | Jasper Van der Jeugt
- Haskell mini-patterns handbook | Kowainik (Dmitrii Kovanikov, Veronika Romashkina)
- Haskell Design Patterns (Book) | Ryan Lemmer
- Enterprise Haskell Pattern: Lensed Reader | Michael Xavier
- The Has Type Class Pattern | Jonathan Fischoff
- Type Class Patterns and Anti-patterns | Jonathan Fischoff
- Which Type-Safe Database Library Should You Use? | William Yao
- Revising application structure | Felix Mulder
- Final Tagless vs Free Monad (Talk, Rus) | Slides (Eng) | Alexander Granin | FPure 2019, Kazan
- Monad transformers, free monads, mtl, laws and a new approach | Oliver Charles
- Backpack for initial and final encodings | qfpl
- Capability: The ReaderT Pattern Without The Boilerplate | Andreas Herrmann, Arnaud Spiwack | Tweag.io
Separate page:
- Boring Haskell Manifesto | Michael Snoyman | Reddit discussion
- The Haskell Pyramid | Patrick
- My thoughts on Haskell in 2020 | Marco Sampellegrini
- Write Junior Code | Matt Parsons
- Fancy Haskell | Dan Fithian
- Simple Haskell Is Best Haskell | Sam Halliday
- On Marketing Haskell | Stephen Diehl
- How to market Haskell to mainstream programmers | Talk | Gabriella Gonzalez
Note. It's a big void here in these topics. We don't have any good materials about Design Principles applicable to Haskell.
- Inversion of Control
- Dependency Injection
- Low Coupling / High Cohesion
- Rule of Least Power / Law of Demeter
- SOLID
- KISS
- YAGNI
- DRY
- Figuring Out How To Use Beam For DB Migrations | Willam Yao
- Making a small Haskell application | Morten Kolstad
- Haskell practices | freckle
- An opinionated guide to Haskell in 2018 | Lexi Lambda
- Getting things done in Haskell (Talk) | Jasper Van der Jeugt | HaskellerZ, Feb 2018
- Working around Haskell's namespace problem for records | Moritz Clasmeier
- Exceptions Best Practices in Haskell | Michael Snoyman | FP Complete
- Asynchronous exception handling in Haskell | Michael Snoyman | FP Complete
- Exceptions tutorial | Mark Karpov
- The three kinds of Haskell exceptions and how to use them | Tweag
- Programming guidelines
- Kowainik's Haskell Style Guide
- Tweag.IO's Haskell Style Guide
- Tibbe's Haskell Style Guide
Separate page:
- Haskell in Production, Serokell's blog
- Why Haskell is our first choice for building production software systems
- The Joy and Agony of Haskell in Production | Stephen Diehl
- Haskell is Not For Production and Other Tales (Talk) | Katie Miller | Linux.conf.au 2016 | Geelong, Australia
- Production Haskell (Talk) | Reid Draper
- Haskell in Production | Felix Mulder
- Haskell in Production | Hasura.IO
- 5 Years of Haskell in Production (Talk) | Alexander Thiemann
- Retrospective: Haskell in Production | Sergio De Simone
- My “Haskell In Production” Story | David Joyner
- Introducing Haskell in Soisy
- Getting things done in Haskell (Talk) | Jasper Van der Jeugt | HaskellerZ, Feb 2018
- Your Second Haskell Web App—A Yesod Workshop with Michael Snoyman | Michael Snoyman
- Functional architecture - The pits of success | Mark Seemann | NDC Sidney 2016
- Hierarchical Free Monads and Software Design in Functional Programming (Talk) | Slides | Alexander Granin | FunctionalConf 2019, Bangalore, India
- Final Tagless vs Free Monad (Talk, Rus) | Slides (Eng) | Alexander Granin | FPure 2019, Kazan
- Haskell is Not For Production and Other Tales (Talk) | Katie Miller | Linux.conf.au 2016 | Geelong, Australia
- Production Haskell (Talk) | Reid Draper
- 5 Years of Haskell in Production (Talk) | Alexander Thiemann
This section is aimed to show that learning and using Haskell is not as horrible as some folks are trying to claim.
- State of the Haskell ecosystem | Gabriella Gonzalez
- 2017 State of Haskell Survey results | Taylor Fausak
- 2018 State of Haskell Survey results | Taylor Fausak
- 2019 State of Haskell Survey results | Taylor Fausak
- 2020 State of Haskell Survey results | Taylor Fausak
- 2021 State of Haskell Survey results | Taylor Fausak
- 2022 State of Haskell Survey results | Taylor Fausak
- 2023 State of Haskell Survey results: Survey was not conducted | Taylor Fausak
- The Haskell Pyramid | Patrick
- Haskell Survey Results 2018 (FP Complete) | FP Complete
- Get Programming with Haskell | Will Kurt
- Haskell in Depth | Vitaly Bragilevsky
- What I Wish I Knew When Learning Haskell | Stephen Diehl
- Haskell from the Very Beginning | John Whitington
- Learn You a Haskell for Great Good! | Miran Lipovača
- Programming in Haskell | Graham Hutton
- Haskell And Yesod | Michael Snoyman
- The Simple Haskell Handbook | Marco Sampellegrini
- Production Haskell | Matt Parsons
- Beginning Haskell: A Project-Based Approach | Serrano, Alejandro
- Practical Haskell. A Real World Guide to Programming | Serrano, Alejandro
- Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming | Simon Marlow
- Real World Haskell | Bryan O'Sullivan, Don Stewart, John Goerzen
- Haskell Design Patterns | Ryan Lemmer
- Functional Design and Architecture (Manning Publications, 2024) | Alexander Granin
- Pragmatic Type-Level Design (self-published, LeanPub, 2025) | Alexander Granin
- Thinking with Types. Type-Level Programming in Haskell | Sandy Maguire
- Algebra-Driven-Design | Sandy Maguire
- Haskell Programming from First Principles (aka Haskell Book) | Chistopher Allen, Julie Moronuki
- Optics by example | Chris Penner
- A type of programming | Renzo Carbonara
- The Haskell School of Music: From Signals to Symphonies | Paul Hudak, Donya Quick
- Algorithm Design with Haskell | Richard Bird, Jeremy Gibbons
- Thinking Functionally with Haskell | Richard Bird
- Haskell: The Craft of Functional Programming | Simon Thompson
- Practical Web Development with Haskell | Ecky Putrady
- Haskell Data Analysis Cookbook
- HASKELL DOCUMENTATION WITH HADDOCK: WISHES'N'TIPS | Veronika Romashkina, Dmitrii Kovanikov (Kowainik)
- Appendix to Software Design in Haskell