2019-12-22 17:23:13 +03:00
# Software Design and Architecture in Haskell
A structured set of materials on how to build real-world applications in Haskell.
2019-12-22 17:25:27 +03:00
---------
2019-12-22 17:23:13 +03:00
### Table of Contents
2020-10-17 13:33:35 +03:00
* [Books on Software Design and Architecture in Haskell ](#Books-on-Software-Design-and-Architecture-in-Haskell )
2019-12-22 17:32:43 +03:00
* [Application Architectures ](#Application-Architectures )
2019-12-22 17:37:14 +03:00
* [Design Approaches and Design Patterns ](#Design-Approaches-and-Design-Patterns )
2019-12-22 17:32:43 +03:00
* [Free Monads ](#Free-Monads )
2019-12-22 17:33:06 +03:00
* [Final Tagless / mtl ](#Final-Tagless--mtl )
2019-12-22 17:32:43 +03:00
* [Effect Systems ](#Effect-Systems )
2019-12-22 18:48:16 +03:00
* [ReaderT Pattern ](#ReaderT-Pattern )
2019-12-22 17:32:43 +03:00
* [Service Handle Pattern ](#Service-Handle-Pattern )
* [Other Patterns ](#Other-Patterns )
* [OOP Design Patterns vs FP Design Patterns ](#OOP-Design-Patterns-vs-FP-Design-Patterns )
2019-12-26 18:58:17 +03:00
* [Comparison of Approaches ](#Comparison-of-Approaches )
2019-12-23 11:48:37 +03:00
* [Comparison Table ](#Comparison-Table )
2019-12-22 17:37:14 +03:00
* [Design Principles ](#Design-Principles )
2020-05-31 07:23:38 +03:00
* [Philosophy ](#Philosophy )
2019-12-22 17:34:32 +03:00
* [Best Practices & Guidelines ](#Best-Practices--Guidelines )
2020-07-18 13:18:46 +03:00
* [Exceptions ](#Exceptions )
* [Style Guides ](#Style-Guides )
2019-12-26 16:43:16 +03:00
* [Showcase Projects & Code Organization Samples ](#Showcase-Projects--Code-Orgranization-Samples )
2019-12-22 17:34:32 +03:00
* [Haskell in Production. Success Stories, Experience Reports ](#Haskell-in-Production--Success-Stories--Experience-Reports )
* [Talks ](#Talks )
* [Haskell Ecosystem and Accessibility ](#Haskell-Ecosystem-and-Accessibility )
2019-12-23 21:14:35 +03:00
* [Haskell Ecosystem and Community ](#Haskell-Ecosystem-and-Community )
2020-07-23 17:47:57 +03:00
* [Haskeller Competency Matrix ](#Haskeller-Competency-Matrix )
2020-07-05 14:40:39 +03:00
* [Haskell Learn: Books ](#Haskell-Learn-Books )
2020-02-04 10:30:30 +03:00
* [Misc ](#Misc )
2019-12-22 17:23:13 +03:00
2019-12-22 17:25:27 +03:00
--------
2019-12-18 18:32:56 +03:00
2020-10-17 13:33:35 +03:00
# Books on Software Design and Architecture in Haskell
2019-12-21 18:44:41 +03:00
2021-07-22 16:57:48 +03:00
- [Functional Design and Architecture (Second Edition) ](https://www.manning.com/books/functional-design-and-architecture ) | **Alexander Granin**
2023-10-30 05:58:16 +03:00
- [Functional Design and Architecture (First Edition) ](https://leanpub.com/functional-design-and-architecture ) | **Alexander Granin**
- [Pragmatic Type-Level Design (WIP) ](https://github.com/graninas/Pragmatic-Type-Level-Design ) | **Alexander Granin**
2020-10-17 13:33:35 +03:00
- [Production Haskell ](https://leanpub.com/production-haskell ) | **Matt Parsons**
2020-10-18 17:27:19 +03:00
- [Algebra-Driven-Design ](https://leanpub.com/algebra-driven-design ) | **Sandy Maguire**
2019-12-23 10:34:05 +03:00
- [Practical Haskell. A Real World Guide to Programming ](https://www.apress.com/gp/book/9781484244791 ) | **Serrano, Alejandro**
- [Real World Haskell ](http://book.realworldhaskell.org/ ) | **Bryan O'Sullivan, Don Stewart, John Goerzen**
2019-12-28 20:12:34 +03:00
- [Up-to-date Real World Haskell ](https://github.com/tssm/up-to-date-real-world-haskell ) | **Bryan O'Sullivan, Don Stewart, John Goerzen, Tae Sandoval**
2020-01-09 13:41:28 +03:00
- [Haskell Design Patterns ](https://www.oreilly.com/library/view/haskell-design-patterns/9781783988723/ ) | **Ryan Lemmer**
2021-05-20 15:07:06 +03:00
- [The Simple Haskell Handbook ](https://leanpub.com/simple-haskell-book ) | **Marco Sampellegrini**
2021-05-28 17:28:00 +03:00
- [Haskell And Yesod ](https://www.yesodweb.com/book ) | **Michael Snoyman**
2019-12-21 18:44:41 +03:00
2023-06-01 12:51:46 +03:00
# Application Architectures and Methodologies
2019-12-18 18:32:56 +03:00
2019-12-23 10:34:05 +03:00
- [Three Layer Haskell Cake ](https://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html ) | **Matt Parsons**
- [A Modern Architecture for FP ](http://degoes.net/articles/modern-fp ) | **John A De Goes**
2019-12-27 22:32:26 +03:00
- [Modern Functional Programming: Part 2 ](http://degoes.net/articles/modern-fp-part-2 ) | **John A De Goes**
2020-05-08 18:44:48 +03:00
- [Anatomy of a Haskell-based Application ](https://abailly.github.io/posts/cm-arch-design.html ) | **abailly**
2019-12-28 16:25:13 +03:00
- [Architecture of a Real World Haskell Application ](https://www.onikudaki.net/blog/archives/6 ) | **Michael Oswald**
2020-01-15 10:17:09 +03:00
- [Functional architecture - The pits of success ](https://m.youtube.com/watch?v=US8QG9I1XW0 ) | **Mark Seemann** | NDC Sidney 2016
2020-05-08 18:44:48 +03:00
- [Hierarchical Free Monads: The Most Developed Approach In Haskell (And The Death Of Final Tagless) ](https://github.com/graninas/hierarchical-free-monads-the-most-developed-approach-in-haskell/blob/master/README.md ) | **Alexander Granin**
2023-06-01 12:51:46 +03:00
- [Functional Declarative Design: A Comprehensive Methodology for Statically-Typed Functional Programming Languages ](https://github.com/graninas/functional-declarative-design-methodology ) | **Alexander Granin**
2019-12-26 14:04:32 +03:00
- [Hierarchical Free Monads and Software Design in Functional Programming (Talk) ](https://youtu.be/3GKQ4ni2pS0 ) | [Slides ](https://docs.google.com/presentation/d/1SYMIZ-LOI8Ylykz0PTxwiPuHN_02gIWh9AjJDO6xbvM/edit?usp=sharing ) | **Alexander Granin** | FunctionalConf 2019, Bangalore, India
2019-12-28 15:57:58 +03:00
- [Hexagonal Architecture and Free Monad: Two related design patterns? ](https://www.pinterest.ru/pin/791929915696726474/#amp ) | **Quentin Duval**
2019-12-23 10:43:44 +03:00
- [Large-scale design in Haskell? (SO question) ](https://stackoverflow.com/questions/3077866/large-scale-design-in-haskell )
2019-12-18 18:32:56 +03:00
2019-12-22 17:37:14 +03:00
# Design Approaches and Design Patterns
2019-12-18 18:32:56 +03:00
2019-12-22 09:27:28 +03:00
### Free Monads
2019-12-21 18:54:27 +03:00
2022-10-22 04:51:51 +03:00
- [Why free monads matter ](http://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html ) | **Gabriella Gonzalez**
2020-05-08 18:44:48 +03:00
- [Free monads in 7 easy steps ](https://joa.sh/posts/2015-09-13-free-monad-steps.html ) | **joa**
2019-12-23 10:34:05 +03:00
- [A Modern Architecture for FP ](http://degoes.net/articles/modern-fp ) | **John A De Goes**
2019-12-26 19:55:16 +03:00
- [Building network actors with Node Framework ](https://gist.github.com/graninas/9beb8df5d88dda5fa21c47ce9bcb0e16 ) | **Alexander Granin** | _Note: a Free monadic architecture is described there._
2019-12-23 10:51:30 +03:00
- [Automatic White-Box Testing with Free Monads ](https://github.com/graninas/automatic-whitebox-testing-showcase ) | **Alexander Granin** | [Showcase ](https://github.com/graninas/automatic-whitebox-testing-showcase )
2020-05-08 18:44:48 +03:00
- [Hierarchical Free Monads: The Most Developed Approach In Haskell (And The Death Of Final Tagless) ](https://github.com/graninas/hierarchical-free-monads-the-most-developed-approach-in-haskell/blob/master/README.md ) | **Alexander Granin**
2019-12-23 10:53:50 +03:00
- [Hierarchical Free Monads and Software Design in Functional Programming (Talk) ](https://youtu.be/3GKQ4ni2pS0 ) | [Slides ](https://docs.google.com/presentation/d/1SYMIZ-LOI8Ylykz0PTxwiPuHN_02gIWh9AjJDO6xbvM/edit?usp=sharing ) | **Alexander Granin** | FunctionalConf 2019, Bangalore, India
2019-12-28 15:57:58 +03:00
- [Strict typing fun example — Free Monads in Haskell ](https://www.endpoint.com/blog/2016/03/11/strict-typing-fun-example-free-monads ) | **Kamil Ciemniewski**
- [Free Monads: from the basics to the implementation of composable and effectful stream processing ](https://deque.blog/2017/11/13/free-monads-from-basics-up-to-implementing-composable-and-effectful-stream-processing/ ) | **Quentin Duval**
2019-12-23 10:34:05 +03:00
- [What does Free buy us? ](https://www.parsonsmatt.org/2017/09/22/what_does_free_buy_us.html ) | **Matt Parsons**
- [Combining free monads in Haskell ](https://blog.ploeh.dk/2017/07/24/combining-free-monads-in-haskell/ ) | **Mark Seemann**
2019-12-26 14:23:29 +03:00
- [Free monad considered harmful ](https://markkarpov.com/post/free-monad-considered-harmful.html ) | **Mark Karpov**
2019-12-26 19:55:16 +03:00
- [What is the “Free Monad + Interpreter” pattern? (SO question) ](https://softwareengineering.stackexchange.com/questions/242795/what-is-the-free-monad-interpreter-pattern# )
2019-12-27 21:44:07 +03:00
- [A Practical Introduction to Freer Monads (Eff) ](https://captjakk.com/posts/2019-05-12-practical-intro-eff.html ) | **Keagan McClelland**
2019-12-22 09:31:32 +03:00
2019-12-22 10:28:47 +03:00
### Final Tagless / mtl
2019-12-21 18:54:27 +03:00
2019-12-23 10:34:05 +03:00
- [Tagless Final Encoding in Haskell ](https://jproyo.github.io/posts/2019-03-17-tagless-final-haskell.html ) | **Juan Pablo Royo**
- [Introduction to Tagless Final ](https://serokell.io/blog/tagless-final ) | **Vasiliy Kevroletin** | Serokell
- [Reducing boilerplate in finally tagless style ](https://ro-che.info/articles/2016-02-03-finally-tagless-boilerplate ) | **Roman Cheplyaka**
2019-12-28 15:57:58 +03:00
- [Tagless Final Encoding of a Test Language ](https://wickstrom.tech/programming/2017/06/05/tagless-final-encoding-of-a-test-language.html ) | **Oskar Wickström**
2019-12-21 18:54:27 +03:00
2019-12-22 13:53:39 +03:00
### Effect Systems
2019-12-22 13:39:10 +03:00
2019-12-28 15:57:58 +03:00
- [Eff to the Rescue! ](https://mmhaskell.com/blog/2017/11/20/eff-to-the-rescue ) | **Monday Morning Haskell**
2019-12-26 10:04:39 +03:00
- [Freer doesn’ t come for free ](https://medium.com/barely-functional/freer-doesnt-come-for-free-c9fade793501 ) | **Eric Torreborre**
2019-12-26 10:09:13 +03:00
- [Serving HTTP Content with Fused-Effects ](https://blog.sumtypeofway.com/posts/serving-http-content-with-fused-effects.html ) | **Patrick Thomson**
2019-12-27 21:44:07 +03:00
- [A Practical Introduction to Freer Monads (Eff) ](https://captjakk.com/posts/2019-05-12-practical-intro-eff.html ) | **Keagan McClelland**
2019-12-26 09:52:52 +03:00
2019-12-22 13:39:10 +03:00
### ReaderT Pattern
2019-12-22 09:04:07 +03:00
2019-12-23 10:34:05 +03:00
- [The ReaderT Design Pattern ](https://www.fpcomplete.com/blog/2017/06/readert-design-pattern ) | **Michael Snoyman**
2019-12-27 14:04:01 +03:00
- [The ReaderT design pattern or tagless final? ](http://magnus.therning.org/posts/2019-02-02-000-the-readert-design-pattern-or-tagless-final-.html ) | **Magnus Therning**
2019-12-28 15:57:58 +03:00
- [Capability: The ReaderT Pattern Without The Boilerplate ](https://www.tweag.io/posts/2018-10-04-capability.html ) | **Andreas Herrmann, Arnaud Spiwack** | Tweag.IO
2019-12-22 11:51:57 +03:00
2019-12-22 13:39:10 +03:00
### Service Handle Pattern
2019-12-23 10:34:05 +03:00
- [The Service Pattern ](https://www.schoolofhaskell.com/user/meiersi/the-service-pattern ) | **Simon Meier**
- [Haskell Design Patterns: The Handle Pattern ](https://jaspervdj.be/posts/2018-03-08-handle-pattern.html ) | **Jasper Van der Jeugt**
2019-12-22 13:39:10 +03:00
### Other Patterns
2020-08-23 12:29:02 +03:00
- [Haskell mini-patterns handbook ](https://kowainik.github.io/posts/haskell-mini-patterns ) | **Kowainik** (**Dmitrii Kovanikov**, **Veronika Romashkina** )
2020-01-09 13:41:28 +03:00
- [Haskell Design Patterns (Book) ](https://www.oreilly.com/library/view/haskell-design-patterns/9781783988723/ ) | **Ryan Lemmer**
2019-12-23 10:34:05 +03:00
- [Enterprise Haskell Pattern: Lensed Reader ](https://michaelxavier.net/posts/2016-04-03-Enterprise-Haskell-Pattern-Lensed-Reader.html ) | **Michael Xavier**
- [The Has Type Class Pattern ](https://hackernoon.com/the-has-type-class-pattern-ca12adab70ae ) | **Jonathan Fischoff**
- [Type Class Patterns and Anti-patterns ](https://hackernoon.com/type-class-patterns-and-anti-patterns-efd045c5af66 ) | **Jonathan Fischoff**
2019-12-22 16:57:07 +03:00
2019-12-22 13:27:08 +03:00
### OOP Design Patterns vs FP Design Patterns
2019-12-28 16:19:15 +03:00
- [Lambda the Ultimate Pattern Factory ](https://github.com/thma/LtuPatternFactory ) | **thma**
2019-12-22 13:27:08 +03:00
2019-12-26 18:58:17 +03:00
### Comparison of Approaches
2019-12-22 13:27:08 +03:00
2019-12-23 10:34:05 +03:00
- [Which Type-Safe Database Library Should You Use? ](https://williamyaoh.com/posts/2019-12-14-typesafe-db-libraries.html ) | **William Yao**
2020-08-09 05:52:14 +03:00
- [Revising application structure ](http://felixmulder.com/writing/2020/08/08/Revisiting-application-structure ) | **Felix Mulder**
2019-12-23 10:53:50 +03:00
- [Final Tagless vs Free Monad (Talk, Rus) ](https://youtu.be/u1GGqDQyGfc ) | [Slides (Eng) ](https://drive.google.com/open?id=1VhS8ySgk2w5RoN_l_Ar_axcE4Dzf97zLw1uuzUJQbCo ) | **Alexander Granin** | FPure 2019, Kazan
2019-12-28 16:19:15 +03:00
- [Monad transformers, free monads, mtl, laws and a new approach ](https://ocharles.org.uk/posts/2016-01-26-transformers-free-monads-mtl-laws.html ) | **Oliver Charles**
2020-05-08 18:45:49 +03:00
- [Backpack for initial and final encodings ](https://qfpl.io/posts/backpack-for-initial-and-final-encodings/ ) | **qfpl**
2019-12-28 16:19:15 +03:00
- [Capability: The ReaderT Pattern Without The Boilerplate ](https://www.tweag.io/posts/2018-10-04-capability.html ) | **Andreas Herrmann, Arnaud Spiwack** | Tweag.io
2019-12-22 09:27:28 +03:00
2019-12-23 11:48:37 +03:00
### Comparison Table
2019-12-26 14:21:34 +03:00
Separate page:
2019-12-23 11:50:57 +03:00
- [Haskell Approaches Comparison Table ](https://gist.github.com/graninas/1b7961ccaedf7b5cb92417a1599fdc99 )
2019-12-23 11:48:37 +03:00
2020-05-31 07:23:38 +03:00
# Philosophy
2019-12-22 17:40:17 +03:00
2019-12-23 10:51:30 +03:00
- [Boring Haskell Manifesto ](https://www.snoyman.com/blog/2019/11/boring-haskell-manifesto ) | **Michael Snoyman** | [Reddit discussion ](https://www.reddit.com/r/haskell/comments/dzx15d/boring_haskell_manifesto_by_michael_snoyman/ )
2019-12-28 16:19:15 +03:00
- [The Haskell Pyramid ](https://patrickmn.com/software/the-haskell-pyramid/ ) | **Patrick**
2019-12-26 16:36:35 +03:00
- [My thoughts on Haskell in 2020 ](https://alpacaaa.net/thoughts-on-haskell-2020/ ) | **Marco Sampellegrini**
2019-12-29 10:46:36 +03:00
- [Write Junior Code ](https://www.parsonsmatt.org/2019/12/26/write_junior_code.html ) | **Matt Parsons**
2020-01-09 14:12:40 +03:00
- [Fancy Haskell ](https://dfithian.github.io/2019/12/30/fancy-haskell.html ) | **Dan Fithian**
2020-05-31 07:22:38 +03:00
- [Simple Haskell Is Best Haskell ](https://medium.com/@fommil/simple-haskell-is-best-haskell-6a1ea59c73b ) | **Sam Halliday**
- [On Marketing Haskell ](https://www.stephendiehl.com/posts/marketing.html ) | **Stephen Diehl**
2022-10-22 04:50:54 +03:00
- [How to market Haskell to mainstream programmers ](https://www.youtube.com/watch?v=fNpsgTIpODA ) | Talk | **Gabriella Gonzalez**
2019-12-22 17:40:17 +03:00
# Design Principles
2019-12-26 13:45:56 +03:00
*Note. It's a big void here in these topics. We don't have any good materials about Design Principles applicable to Haskell.*
2019-12-23 14:49:01 +03:00
- Inversion of Control
- Dependency Injection
2019-12-23 14:50:06 +03:00
- Low Coupling / High Cohesion
- Rule of Least Power / Law of Demeter
2019-12-22 17:40:17 +03:00
- SOLID
- KISS
- YAGNI
- DRY
2019-12-22 16:26:38 +03:00
# Best Practices & Guidelines
2019-12-22 13:53:39 +03:00
2019-12-23 10:34:05 +03:00
- [Figuring Out How To Use Beam For DB Migrations ](https://williamyaoh.com/posts/2019-09-27-figuring-out-beam-migrations.html ) | **Willam Yao**
2019-12-24 01:11:32 +03:00
- [Making a small Haskell application ](https://github.com/morteako/bitcoin ) | **Morten Kolstad**
2020-05-08 18:44:48 +03:00
- [Haskell practices ](https://github.com/freckle/guides/blob/master/haskell-best-practices.md ) | **freckle**
2019-12-23 10:34:05 +03:00
- [An opinionated guide to Haskell in 2018 ](https://lexi-lambda.github.io/blog/2018/02/10/an-opinionated-guide-to-haskell-in-2018/ ) | **Lexi Lambda**
2019-12-23 11:05:56 +03:00
- [Getting things done in Haskell (Talk) ](https://www.youtube.com/watch?v=-X1vrxQUETM ) | **Jasper Van der Jeugt** | HaskellerZ, Feb 2018
- [Working around Haskell's namespace problem for records ](https://gist.github.com/mtesseract/1b69087b0aeeb6ddd7023ff05f7b7e68 ) | **Moritz Clasmeier**
2020-07-18 14:30:17 +03:00
### Exceptions
* [Exceptions Best Practices in Haskell ](https://www.fpcomplete.com/blog/2016/11/exceptions-best-practices-haskell ) | **Michael Snoyman** | FP Complete
2020-08-21 17:54:54 +03:00
* [Asynchronous exception handling in Haskell ](https://www.fpcomplete.com/blog/2018/04/async-exception-handling-haskell/ ) | **Michael Snoyman** | FP Complete
2020-07-18 14:30:17 +03:00
* [Exceptions tutorial ](https://markkarpov.com/tutorial/exceptions.html ) | **Mark Karpov**
2020-07-25 20:09:54 +03:00
* [The three kinds of Haskell exceptions and how to use them ](https://www.tweag.io/blog/2020-04-16-exceptions-in-haskell/ ) | **Tweag**
2020-07-18 14:30:17 +03:00
### Style Guides
* [Programming guidelines ](https://wiki.haskell.org/Programming_guidelines )
* [Kowainik's Haskell Style Guide ](https://kowainik.github.io/posts/2019-02-06-style-guide )
* [Tweag.IO's Haskell Style Guide ](https://github.com/tweag/guides/blob/master/style/Haskell.md )
* [Tibbe's Haskell Style Guide ](https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md )
2019-12-22 16:26:38 +03:00
2019-12-22 13:53:39 +03:00
# Showcase Projects & Code Orgranization Samples
2019-12-26 14:21:34 +03:00
Separate page:
- [Software Design Showcase Projects in Haskell ](https://gist.github.com/graninas/49be74a21fbd58236bad28e1ce1eed94 )
2019-12-22 13:53:39 +03:00
2019-12-22 12:40:07 +03:00
# Haskell in Production. Success Stories, Experience Reports
2019-12-18 19:00:05 +03:00
2023-06-02 08:28:48 +03:00
- [Haskell in Production, Serokell's blog ](https://serokell.io/blog/interviews )
2021-01-12 00:09:21 +03:00
- [Why Haskell is our first choice for building production software systems ](https://www.foxhound.systems/blog/why-haskell-for-production/ )
2019-12-23 10:34:05 +03:00
- [The Joy and Agony of Haskell in Production ](http://www.stephendiehl.com/posts/production.html ) | **Stephen Diehl**
2019-12-28 20:18:57 +03:00
- [Haskell is Not For Production and Other Tales (Talk) ](https://m.youtube.com/watch?v=mlTO510zO78 ) | **Katie Miller** | Linux.conf.au 2016 | Geelong, Australia
2019-12-23 10:51:30 +03:00
- [Production Haskell (Talk) ](https://m.youtube.com/watch?v=AZQLkkDXy68 ) | **Reid Draper**
2019-12-28 20:18:57 +03:00
- Haskell in Production | **Felix Mulder**
2019-12-22 17:01:08 +03:00
- [Haskell in Production ](http://felixmulder.com/writing/2019/10/05/Haskell-in-Production.html )
- [Designing Testable Components ](http://felixmulder.com/writing/2019/10/05/Designing-testable-components.html )
2019-12-23 10:51:30 +03:00
- [Haskell in Production ](https://blog.hasura.io/from-zero-to-hipster-haskell-in-production-97ea99d90c3b/ ) | Hasura.IO
- [5 Years of Haskell in Production (Talk) ](https://youtu.be/hZgW4mT1PkE ) | **Alexander Thiemann**
2019-12-28 20:18:57 +03:00
- [Retrospective: Haskell in Production ](https://www.infoq.com/news/2016/08/haskell-production-retrospective/ ) | **Sergio De Simone**
2019-12-23 10:34:05 +03:00
- [My “Haskell In Production” Story ](https://medium.com/@djoyner/my-haskell-in-production-story-e48897ed54c ) | **David Joyner**
2021-06-05 19:35:57 +03:00
- [Introducing Haskell in Soisy ](http://marcosh.github.io/post/2021/06/04/introducing-haskell-in-soisy.html )
2019-12-22 21:47:49 +03:00
2019-12-22 12:41:25 +03:00
# Talks
2019-12-23 11:08:11 +03:00
- [Getting things done in Haskell (Talk) ](https://www.youtube.com/watch?v=-X1vrxQUETM ) | **Jasper Van der Jeugt** | HaskellerZ, Feb 2018
2020-04-30 13:01:03 +03:00
- [Your Second Haskell Web App—A Yesod Workshop with Michael Snoyman ](https://www.youtube.com/watch?v=LEdEOlLlMfM ) | **Michael Snoyman**
2020-01-15 10:17:09 +03:00
- [Functional architecture - The pits of success ](https://m.youtube.com/watch?v=US8QG9I1XW0 ) | **Mark Seemann** | NDC Sidney 2016
2019-12-23 10:55:35 +03:00
- [Hierarchical Free Monads and Software Design in Functional Programming (Talk) ](https://youtu.be/3GKQ4ni2pS0 ) | [Slides ](https://docs.google.com/presentation/d/1SYMIZ-LOI8Ylykz0PTxwiPuHN_02gIWh9AjJDO6xbvM/edit?usp=sharing ) | **Alexander Granin** | FunctionalConf 2019, Bangalore, India
2019-12-23 10:53:50 +03:00
- [Final Tagless vs Free Monad (Talk, Rus) ](https://youtu.be/u1GGqDQyGfc ) | [Slides (Eng) ](https://drive.google.com/open?id=1VhS8ySgk2w5RoN_l_Ar_axcE4Dzf97zLw1uuzUJQbCo ) | **Alexander Granin** | FPure 2019, Kazan
2019-12-28 20:18:57 +03:00
- [Haskell is Not For Production and Other Tales (Talk) ](https://m.youtube.com/watch?v=mlTO510zO78 ) | **Katie Miller** | Linux.conf.au 2016 | Geelong, Australia
2019-12-23 11:08:11 +03:00
- [Production Haskell (Talk) ](https://m.youtube.com/watch?v=AZQLkkDXy68 ) | **Reid Draper**
- [5 Years of Haskell in Production (Talk) ](https://youtu.be/hZgW4mT1PkE ) | **Alexander Thiemann**
2019-12-22 12:41:25 +03:00
2019-12-22 17:06:39 +03:00
# Haskell Ecosystem and Accessibility
2019-12-22 12:41:25 +03:00
2019-12-22 17:01:08 +03:00
This section is aimed to show that learning and using Haskell is not as horrible as some folks are trying to claim.
2019-12-22 12:41:25 +03:00
2019-12-23 21:14:35 +03:00
### Haskell Ecosystem and Community
2019-12-22 17:06:39 +03:00
2022-10-22 04:50:54 +03:00
- [State of the Haskell ecosystem ](https://github.com/Gabriella439/post-rfc/blob/main/sotu.md ) | **Gabriella Gonzalez**
2019-12-23 21:13:49 +03:00
- [2017 State of Haskell Survey results ](https://taylor.fausak.me/2017/11/15/2017-state-of-haskell-survey-results/ ) | **Taylor Fausak**
- [2018 State of Haskell Survey results ](https://taylor.fausak.me/2018/11/18/2018-state-of-haskell-survey-results/ ) | **Taylor Fausak**
- [2019 State of Haskell Survey results ](https://taylor.fausak.me/2019/11/16/haskell-survey-results/ ) | **Taylor Fausak**
2020-12-01 21:03:43 +03:00
- [2020 State of Haskell Survey results ](https://taylor.fausak.me/2020/11/22/haskell-survey-results/ ) | **Taylor Fausak**
2024-03-19 11:34:51 +03:00
- [2021 State of Haskell Survey results ](https://taylor.fausak.me/2021/11/16/haskell-survey-results/ ) | **Taylor Fausak**
- [2022 State of Haskell Survey results ](https://taylor.fausak.me/2022/11/18/haskell-survey-results/ ) | **Taylor Fausak**
- 2023 State of Haskell Survey results: Survey was not conducted | **Taylor Fausak**
2019-12-28 20:18:57 +03:00
- [The Haskell Pyramid ](https://patrickmn.com/software/the-haskell-pyramid/ ) | **Patrick**
2020-01-07 14:57:10 +03:00
- [Haskell Survey Results 2018 (FP Complete) ](https://www.fpcomplete.com/blog/2018-haskell-survey-results ) | FP Complete
2019-12-22 17:06:39 +03:00
2020-07-23 17:47:22 +03:00
### Haskeller Competency Matrix
- [Haskeller Competency Matrix (separate page) ](https://gist.github.com/graninas/833a9ff306338aefec7e543100c16ea1 )
2019-12-22 17:23:13 +03:00
### Haskell Learn: Books
2019-12-18 19:50:55 +03:00
2019-12-23 10:34:05 +03:00
- [Get Programming with Haskell ](https://www.manning.com/books/get-programming-with-haskell ) | **Will Kurt**
- [Haskell in Depth ](https://www.manning.com/books/haskell-in-depth ) | **Vitaly Bragilevsky**
- [What I Wish I Knew When Learning Haskell ](http://dev.stephendiehl.com/hask/ ) | **Stephen Diehl**
- [Haskell from the Very Beginning ](https://www.haskellfromtheverybeginning.com/ ) | **John Whitington**
- [Learn You a Haskell for Great Good! ]( http://learnyouahaskell.com/ ) | **Miran Lipovača**
- [Programming in Haskell ](https://www.cs.nott.ac.uk/~pszgmh/pih.html ) | **Graham Hutton**
2021-05-28 17:28:00 +03:00
- [Haskell And Yesod ](https://www.yesodweb.com/book ) | **Michael Snoyman**
2021-05-20 15:06:30 +03:00
- [The Simple Haskell Handbook ](https://leanpub.com/simple-haskell-book ) | **Marco Sampellegrini**
2020-10-17 13:33:35 +03:00
- [Production Haskell ](https://leanpub.com/production-haskell ) | **Matt Parsons**
2020-07-05 14:40:01 +03:00
- [Beginning Haskell: A Project-Based Approach ](https://www.apress.com/gp/book/9781430262510 ) | **Serrano, Alejandro**
2019-12-23 10:34:05 +03:00
- [Practical Haskell. A Real World Guide to Programming ](https://www.apress.com/gp/book/9781484244791 ) | **Serrano, Alejandro**
- [Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming ](http://shop.oreilly.com/product/0636920026365.do ) | **Simon Marlow**
- [Real World Haskell ](http://book.realworldhaskell.org/ ) | **Bryan O'Sullivan, Don Stewart, John Goerzen**
2020-10-26 11:11:05 +03:00
- [Haskell Design Patterns ](https://www.oreilly.com/library/view/haskell-design-patterns/9781783988723/ ) | **Ryan Lemmer**
2021-07-22 16:57:48 +03:00
- [Functional Design and Architecture (Second Edition) ](https://www.manning.com/books/functional-design-and-architecture ) | **Alexander Granin**
2019-12-27 09:51:36 +03:00
- [Thinking with Types. Type-Level Programming in Haskell ](https://thinkingwithtypes.com/ ) | **Sandy Maguire**
2020-10-18 17:28:08 +03:00
- [Algebra-Driven-Design ](https://leanpub.com/algebra-driven-design ) | **Sandy Maguire**
2020-01-09 13:41:28 +03:00
- [Haskell Programming from First Principles (aka Haskell Book) ](https://haskellbook.com/ ) | **Chistopher Allen, Julie Moronuki**
2020-07-05 17:19:51 +03:00
- [Optics by example ](https://leanpub.com/optics-by-example ) | **Chris Penner**
2020-10-26 11:17:12 +03:00
- [A type of programming ](https://atypeofprogramming.com/ ) | **Renzo Carbonara**
2020-07-05 17:27:10 +03:00
- [The Haskell School of Music: From Signals to Symphonies ](https://www.amazon.com/Haskell-School-Music-Signals-Symphonies/dp/1108416756 ) | **Paul Hudak, Donya Quick**
- [Algorithm Design with Haskell ](https://www.amazon.com/Algorithm-Design-Haskell-Richard-Bird/dp/1108491618 ) | **Richard Bird, Jeremy Gibbons**
2020-07-05 17:29:21 +03:00
- [Thinking Functionally with Haskell ](https://www.amazon.com/Thinking-Functionally-Haskell-Richard-Bird/dp ) | **Richard Bird**
2020-07-05 17:32:58 +03:00
- [Haskell: The Craft of Functional Programming ](https://www.amazon.com/Haskell-Functional-Programming-International-Computer/dp/0201882957 ) | **Simon Thompson**
2020-07-05 17:38:00 +03:00
- [Practical Web Development with Haskell ](https://www.amazon.com/Practical-Web-Development-Haskell-Applications-ebook/dp/B07FP523HS ) | **Ecky Putrady**
2021-05-29 18:13:06 +03:00
- [Haskell Data Analysis Cookbook ](https://www.packtpub.com/product/haskell-data-analysis-cookbook/9781783286331 )
2019-12-26 19:20:50 +03:00
### Misc
2020-12-08 09:27:21 +03:00
- [HASKELL DOCUMENTATION WITH HADDOCK: WISHES'N'TIPS ](https://kowainik.github.io/posts/haddock-tips#top-level ) | **Veronika Romashkina** , **Dmitrii Kovanikov** (Kowainik)
2019-12-26 19:20:50 +03:00
- [Appendix to Software Design in Haskell ](https://gist.github.com/graninas/ef5dd5a2b57903af81039fb21ff3b0bf )
2019-12-26 19:21:22 +03:00
- [Testing ](https://gist.github.com/graninas/ef5dd5a2b57903af81039fb21ff3b0bf#Testing )
2020-01-07 14:41:44 +03:00
- [Final Tagless ](https://gist.github.com/graninas/ef5dd5a2b57903af81039fb21ff3b0bf#Final-tagless )
- [Records ](https://gist.github.com/graninas/ef5dd5a2b57903af81039fb21ff3b0bf#Records )
2020-02-04 10:30:30 +03:00
- [Exceptions and Error Handling ](https://gist.github.com/graninas/ef5dd5a2b57903af81039fb21ff3b0bf#Exceptions-and-Error-Handling )
2020-02-07 16:05:56 +03:00
- [Build Tools ](https://gist.github.com/graninas/ef5dd5a2b57903af81039fb21ff3b0bf#Build-Tools )