A structured set of materials on how to build real-world applications in Haskell.
- Books on Software Architecture in Haskell
- Application Architectures
- Design Approaches and Design Patterns
- Design Principles
- Methodologies and 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 | Alexander Granin
- 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
- 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
- Architecture of a Real World Haskell Application | Michael Oswald
- 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
- Hexagonal Architecture and Free Monad: Two related design patterns? | Quentin Duval
- Large-scale design in Haskell? (SO question)
- Why free monads matter | Gabriel Gonzalez
- Free monads in 7 easy steps
- 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 and Software Design in Functional Programming (Talk) | Slides | Alexander Granin | FunctionalConf 2019, Bangalore, India
- Functional Design and Architecture (Book) | Alexander Granin | Note: the whole book is about different aspects of the Free monadic architecture.
- 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 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
- 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
- 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
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
- 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
- Exceptions Best Practices in Haskell | Michael Snoyman | FP Complete
- Style Guides
Separate page:
- 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
- Getting things done in Haskell (Talk) | Jasper Van der Jeugt | HaskellerZ, Feb 2018
- 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 | Gabriel 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
- 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
- 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 (Book) | Ryan Lemmer
- Functional Design and Architecture | Alexander Granin
- Thinking with Types. Type-Level Programming in Haskell | Sandy Maguire
- Haskell Programming from First Principles (aka Haskell Book) | Chistopher Allen, Julie Moronuki