mirror of
https://github.com/graninas/software-design-in-haskell.git
synced 2024-09-11 07:45:28 +03:00
Software Design in Haskell. A structured set of materials. How to build real-world applications in Haskell.
dummy | ||
README.md |
Software Design and Architecture in Haskell
A structured set of materials on how to build real-world applications in Haskell.
Table of Contents
- Books on Software Architecture in Haskell
- Application Architectures
- Design Approaches and Design Patterns
- Comparison of Approaches
- Design Principles
- Methodologies and Phylosophy
- Best Practices & Guidelines
- Testing
- Showcase Projects & Code Orgranization Samples
- Haskell in Production. Success Stories, Experience Reports
- Talks
- Haskell Ecosystem and Accessibility
Books on Software Architecture in Haskell
- 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
Application Architectures
- Three Layer Haskell Cake | Matt Parsons
- A Modern Architecture for FP | John A De Goes
- Hexagonal Architecture and Free Monad: Two related design patterns?
- Anatomy of a Haskell-based Application
- Architecture of a Real World Haskell Application
- A Dead-Simple Web Stack In Haskell | Showcase | William Yao
- Large-scale design in Haskell? (SO question)
Design Approaches and Design Patterns
Free Monads
- 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
- 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
- Strict typing fun example — Free Monads in Haskell
- Free Monads: from the basics to the implementation of composable and effectful stream processing
- What does Free buy us? | Matt Parsons
- What is the “Free Monad + Interpreter” pattern?
- Combining free monads in Haskell | Mark Seemann
Final Tagless / mtl
- 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
Effect Systems
ReaderT Pattern
- The ReaderT Design Pattern | Michael Snoyman
- The ReaderT design pattern or tagless final? | Magnus Therning
- Capability: The ReaderT Pattern Without The Boilerplate
Service Handle Pattern
- The Service Pattern | Simon Meier
- Haskell Design Patterns: The Handle Pattern | Jasper Van der Jeugt
Other Patterns
- (Book) Haskell Design Patterns | Ryan Lemmer
- Enterprise Haskell Pattern: Lensed Reader | Michael Xavier
- The Has Type Class Pattern | Jonathan Fischoff
- Type Class Patterns and Anti-patterns | Jonathan Fischoff
OOP Design Patterns vs FP Design Patterns
Comparison of Approaches
- 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
- Backpack for initial and final encodings
- Capability: The ReaderT Pattern Without The Boilerplate
Comparison Table
Phylosophy
- Boring Haskell Manifesto | Michael Snoyman | Reddit discussion
- The Haskell Pyramid
Design Principles
- Rule of Least Power
- SOLID
- KISS
- YAGNI
- DRY
Best Practices & Guidelines
- Figuring Out How To Use Beam For DB Migrations | Willam Yao
- 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
- Programming guidelines
- Kowainik's Haskell Style Guide
- Tweag.IO's Haskell Style Guide
- Tibbe's Haskell Style Guide
Testing
Showcase Projects & Code Orgranization Samples
Haskell in Production. Success Stories, Experience Reports
- The Joy and Agony of Haskell in Production | Stephen Diehl
- Haskell is Not For Production and Other Tales (Talk) | Katie Miller
- Production Haskell (Talk) | Reid Draper
- Haskell in Production
- Haskell in Production | Hasura.IO
- 5 Years of Haskell in Production (Talk) | Alexander Thiemann
- Retrospective: Haskell in Production
- My “Haskell In Production” Story | David Joyner
Talks
- Getting things done in Haskell (Talk) | Jasper Van der Jeugt | HaskellerZ, Feb 2018
- 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
- Production Haskell (Talk) | Reid Draper
- 5 Years of Haskell in Production (Talk) | Alexander Thiemann
Haskell Ecosystem and Accessibility
This section is aimed to show that learning and using Haskell is not as horrible as some folks are trying to claim.
Haskell Ecosystem
- State of the Haskell ecosystem | Gabriel Gonzalez
Haskell Community
Haskell Learn: Books
- 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
- Functional Design and Architecture | Alexander Granin