software-design-in-haskell/README.md

273 lines
22 KiB
Markdown
Raw Permalink Normal View History

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 doesnt 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)