{"id":13761438,"url":"https://github.com/mmenestret/fp-resources","last_synced_at":"2025-05-10T12:32:31.566Z","repository":{"id":46901907,"uuid":"146462367","full_name":"mmenestret/fp-resources","owner":"mmenestret","description":"Functional programming great resources","archived":false,"fork":false,"pushed_at":"2020-04-17T08:29:33.000Z","size":107,"stargazers_count":488,"open_issues_count":0,"forks_count":49,"subscribers_count":28,"default_branch":"master","last_synced_at":"2024-11-16T19:33:47.623Z","etag":null,"topics":["algebra","category-theory","free-monads","functional-programming","monad","monad-transformers","monoid","recursion-schemes","scala","typeclass","typeclasses"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmenestret.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-28T14:46:54.000Z","updated_at":"2024-10-31T10:35:27.000Z","dependencies_parsed_at":"2022-08-27T01:31:27.288Z","dependency_job_id":null,"html_url":"https://github.com/mmenestret/fp-resources","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmenestret%2Ffp-resources","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmenestret%2Ffp-resources/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmenestret%2Ffp-resources/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmenestret%2Ffp-resources/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmenestret","download_url":"https://codeload.github.com/mmenestret/fp-resources/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253415812,"owners_count":21904927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algebra","category-theory","free-monads","functional-programming","monad","monad-transformers","monoid","recursion-schemes","scala","typeclass","typeclasses"],"created_at":"2024-08-03T13:01:54.822Z","updated_at":"2025-05-10T12:32:31.346Z","avatar_url":"https://github.com/mmenestret.png","language":null,"funding_links":[],"categories":["Others","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Curated list of great functional programming resources (mainly Scala or Haskell based)\n![functional programming path](https://cdn-images-1.medium.com/max/800/1*AM83LP9sGGjIul3c5hIsWg.png)\n\n## Categories\n\n* [Functional programming patterns](#fp-patterns)\n* [Types](#types)\n* [Functional Effects](#effects)\n* [Semigroup / Monoid](#semigroup-monoid)\n* [Tagless Final / MTL](#taglessfinal-mtl)\n* [Monad stack](#monad-stack)\n* [Free Monad](#free-monad)\n* [Typeclass](#typeclass)\n* [Concurrency](#concurrency)\n* [Optics](#optics)\n* [Recursion Schemes](#recursion-schemes)\n* [Theory](#theory)\n* [Academic papers](#academic-papers)\n* [Lectures](#lectures)\n* [Blogs](#blogs)\n* [Books](#books)\n* [Chat rooms](#chat-rooms)\n* [Newsletters](#newsletters)\n* [Podcasts](#podcasts)\n* [Repositories](#repositories)\n* [Events](#events)\n\n\u003ca name=\"fp-patterns\"\u003e\u003c/a\u003e\n## Functional Programming Patterns\n\n### Talks\n\n* [Functional Programming is Terrible - Rúnar Bjarnason](https://www.youtube.com/watch?v=hzf3hTUKk8U)\n    * _Tail Recursion, Trampolining, Higher Kinded Types, Benefits of Functional Programming_\n\n* [What Referential Transparency can do for you - Luka Jacobowitz](https://www.youtube.com/watch?v=X-cEGEJMx_4\u0026feature=youtu.be\u0026t=228)\n    * _Functional Programming Design, Referential Transparency and side-effects_\n\n* [Functional Design Patterns - Scott Wlaschin](https://www.youtube.com/watch?v=srQt1NAHYC0)\n    * _Functional design patterns from partial application to Monads and Monoids_\n\n* [FP to the Max - John De Goes](https://www.youtube.com/watch?v=sxudIMiOo68)\n    * _Live coding session on Functional Programming design and techniques_\n\n* [Constraints Liberate, Liberties Constrain — Runar Bjarnason](https://www.youtube.com/watch?v=GqmsQeSzMdw)\n    * _Functional Programming design_\n    \n* [May Your Data Ever Be Coherent](https://www.youtube.com/watch?v=gVXt1RG_yN0)\n    * _Functional Programming design_\n\n* [Functional Patterns in Domain Modeling — Debasish Ghosh](https://www.youtube.com/watch?v=U0Rk9Knq8Vk)\n    * _Functional domain modeling_\n\n* [Thinking Functionally](https://www.youtube.com/watch?v=-KA3BSdqYug)\n    * _Live-refactor concurrent imperative program with ZIO_\n\n* [Functors, in theory and in practice! - Martin Menestret](https://www.youtube.com/watch?v=_zRBKHN8exA\u0026feature=youtu.be)\n    * _Functors_\n\n### Articles\n\n* [Anatomy of functional programming](http://geekocephale.com/blog/2018/10/08/fp)\n    * _Functional Programming design_\n\n* [Data Modeling in FP vs OOP](http://degoes.net/articles/fp-vs-oop-part1)\n    * _Functional Programming design_\n\n* [Scala best practices](https://nrinaudo.github.io/scala-best-practices/index.html)\n    * _List of good practice in Scala_\n\n* [Trampolining and stack safety in Scala](https://medium.com/@olxc/trampolining-and-stack-safety-in-scala-d8e86474ddfa)\n    * _Trampolining, tail call elimination_\n\n* [Algebraic API Design - Types, Functions, Properties](https://typelevel.org/blog/2019/02/06/algebraic-api-design.html)\n    * _Types, Functions, Properties_\n\n* [Anatomy of an algebra](http://geekocephale.com/blog/2018/10/06/algebras)\n    * _Algebraic Data Type (ADT)_\n\n* [A journey from imperative OO to pure functional programming](https://guizmaii.github.io/LilleFP/#1)\n\n\u003ca name=\"types\"\u003e\u003c/a\u003e\n## Types\n\n### Talks\n\n* [Why do Functional Programmers always talk about Algebra(s)?](https://www.youtube.com/watch?v=s2ay9nEW3ak)\n    * _Domain Algebra, Algebraic structure_\n\n* [Type Members vs Type Parameters](https://www.youtube.com/watch?v=R8GksuRw3VI)\n    * _How to choose between Type Members and Type Parameters_\n\n### Articles\n\n* [Scala’s Types of Types](http://ktoso.github.io/scala-types-of-types)\n    * _Scala Type System_\n\n* [Types: Never commit too early](https://www.sderosiaux.com/articles/2018/08/15/types-never-commit-too-early-part1)\n    * _Function encodings_\n\n* [Kinds of types in Scala](https://kubuszok.com/2018/kinds-of-types-in-scala-part-1/)\n    * _Type Theory in Scala_\n\n* [From Type Theory to Haskell in 10 Minutes](https://www.stackbuilders.com/news/from-type-theory-to-haskell-in-10-minutes) [**Haskell**]\n    * _Type Theory in Haskell_\n\n* [Practical Type Safety](http://www.lihaoyi.com/post/StrategicScalaStylePracticalTypeSafety.html)\n    * _Using Scala in a Type Safe way_\n\n* [Functional APIs: an OOP approach to FP](https://blog.hablapps.com/2017/06/26/functional-apis-an-oop-approach-to-fp/)\n    * _Generalized Algebraic Data Types (GADTs)_\n\n* [How do Algebraic Data types compare to the concept of inheritance in Object Oriented Languages ?](https://www.quora.com/How-do-Algebraic-Data-types-in-say-Haskell-compare-to-the-concept-of-inheritance-in-Object-Oriented-Languages-in-say-Java/answer/Bartosz-Milewski?share=1c2ac3a8)\n    * _Algebraic Data Types (ADTs)_\n\n* [Data type vs Data constructor](https://stackoverflow.com/a/18205862/10915960) [**Haskell**]\n   * _What are data types and data constructors, how they relate in Haskell_\n\n\u003ca name=\"effects\"\u003e\u003c/a\u003e\n## Functional Effects\n\n### Talks\n\n* [Functional Programming with Effects - Rob Norris](https://www.youtube.com/watch?v=po3wmq4S15A)\n    * _Effects and Equational Reasoning_\n\n* [The Death of Final Tagless](https://skillsmatter.com/skillscasts/13247-scala-matters)\n    * _Functional Effects, Tagless Final alternative with ZIO_\n\n* [The Making of an IO - Daniel Spiewak](https://www.youtube.com/watch?v=g_jP47HFpWA)\n    * _IO Monad with Cats Effect_\n    \n* [http4s: pure, typeful, functional HTTP in Scala – Ross Baker](https://www.youtube.com/watch?time_continue=1915\u0026v=urdtmx4h5LE)\n    * _IO, HTTP4s, Kleisli_\n    \n* [Declarative Control Flow with fs2 Stream – Fabio Labella](https://www.youtube.com/watch?v=YSN__0VEsaw)\n    * _Functional Stream with fs2_\n\n* [Regaining Control with State Monad and Friends](https://www.youtube.com/watch?v=Pgo73GfHk0U)\n    * _State, StateT, IndexedState_\n    \n* [Michał Płachta - Fast \u0026 Functional](https://www.youtube.com/watch?v=xAhrgxUeOvY)\n    * _FP design, tagless final, performance_  \n\n* [Gabriel Volpe - Cats Effect: The IO Monad for Scala](https://www.youtube.com/watch?v=8_TWM2t97r4\u0026t=18s)\n    * _Cats Effect, error handling, safe resource management, concurrency, parallelism_\n\n* [John De Goes - Error Management: Future vs ZIO](https://www.youtube.com/watch?v=mGxcaQs3JWI)\n    * _Errors composition, ZIO, Future_\n\n### Articles\n\n* [IO monads, Tagless final, free and alternatives](https://kubuszok.com/2019/io-monad-which-why-and-how/#cats-io-vs-monix-task-vs-zio)\n    * _IO, Tagless final, Free, Eff_\n\n* [ZIO Monad, Scala's ReaderT pattern](http://degoes.net/articles/zio-environment)\n    * _Functional Effects, Tagless Final, ReaderT_\n\n* [Effekt: Extensible Algebraic Effects in Scala](https://conf.researchr.org/event/scala-2017/scala-2017-papers-effekt-extensible-algebraic-effects-in-scala-short-paper-)\n    * _Algebraic effects, Scala library Effekt_\n\n* [Handle pattern](https://jaspervdj.be/posts/2018-03-08-handle-pattern.html) [**Haskell**]\n    * _Modularize Effectful layer of medium to large scaled Haskell applications_\n\n* [ReaderT pattern: RIO](https://www.fpcomplete.com/blog/2017/06/readert-design-pattern) [**Haskell**]\n    * _Better globals with ReaderT_\n\n* [Why Functional Programming? It's the composition](https://tech.iheart.com/why-fp-its-the-composition-f585d17b01d3)\n    * _Compositions, Effects, Functor, Monad, Category Theory_\n\n* [A Problem With I/O](http://www-cs-students.stanford.edu/~blynn/haskell/io.html) [**Haskell**]\n\t* _Monad IO in Haskell_\n\n\u003ca name=\"semigroup-monoid\"\u003e\u003c/a\u003e\n## Semigroup / Monoid\n\n### Talks\n\n\n\n### Articles\n\n* [A tale on Semirings](https://typelevel.org/blog/2018/11/02/semirings.html)\n    * _Journey to Semirings through Semigroups and Monoids_\n\n* [Anatomy of semigroups and monoids](http://geekocephale.com/blog/2018/11/06/semi-monoid)\n    * _Semigroups and Monoids_\n\n\u003ca name=\"taglessfinal-mtl\"\u003e\u003c/a\u003e\n## Tagless Final / MTL\n\n### Talks\n\n* [Advanced Tagless Final - Saying farewell to Free - Luka Jacobowitz](https://www.youtube.com/watch?v=E9iRYNuTIYA)\n    * _Free Monad, Tagless Final_\n\n* [A roadtrip with monads: from MTL, through tagless, to BIO - Paweł Szulc](https://www.youtube.com/watch?v=QM86Ab3lL20)\n    * _MTL, Tagless Final, BIO_\n\n* [Getting more mileage from your monads and MTL - Paweł Szulc](https://www.youtube.com/watch?v=knK70T4X7YE)\n    * _MTL style_\n\n* [Free monad or tagless final? How not to commit to a monad too early - Adam Warski](https://www.youtube.com/watch?v=IhVdU4Xiz2U)\n    * _Live coding session on Free monads and Tagless Final_\n\n* [Freestyle, Free \u0026 Tagless: Separation of Concerns on Steroids - Michał Płachta](https://www.youtube.com/watch?v=-4lB5EKS5Uk)\n    * _Free and Tagless in a real application_\n\n### Articles\n\n* [Introduction to Tagless final](https://www.beyondthelines.net/programming/introduction-to-tagless-final/)\n    * _Tagless Final_\n* [Exploring Tagless Final pattern for extensive and readable Scala code](https://blog.scalac.io/exploring-tagless-final.html)\n    * _Tagless Final_\n\n* [Gist about Fabio Labella's on inital vs final tagless encodings](https://gist.github.com/mmenestret/0b746cfd650796a639723ee74a3de302)\n    * _Tagless Final_\n    \n* [Testing tagless final with Discipline](https://www.iteratorshq.com/blog/tagless-with-discipline-testing-scala-code-the-right-way/)\n    * _Tagless Final with the Typelevel library Discipline_\n\n* [Structuring Functional Programs with Tagless Final](https://www.becompany.ch/en/blog/2018/06/21/tagless-final)\n    * _Tagless Final_\n\n* [Typed tagless-final interpretations: Lecture notes](http://okmij.org/ftp/tagless-final/course/index.html)\n    * _Tagless Final_\n\n* [Optimizing Tagless Final – Saying farewell to Free](https://typelevel.org/blog/2017/12/27/optimizing-final-tagless.html)\n    * _Tagless Final_\n\n* [From Object Algebras to Finally Tagless Interpreters](https://oleksandrmanzyuk.wordpress.com/2014/06/18/from-object-algebras-to-finally-tagless-interpreters-2/) [**Haskell**]\n    * _Tagless Final_\n\n* [Intro to MTL](https://typelevel.org/blog/2018/10/06/intro-to-mtl.html)\n    * _MTL style_\n\n* [Typed tagless-final interpretations](http://okmij.org/ftp/tagless-final/course/index.html) [**Haskell**]\n    * _Typed Tagless Final embeddings of Domain-Specific Languages (DSLs)_\n    \n* [Finally Tagless - Not Quite Dead Yet](https://github.com/ncreep/bloggable-thoughts/tree/master/finally-tagless-not-quite-dead)\n    * _Tagless Final, code examples_\n    \n* [The False Hope of Managing Effects with Tagless-Final in Scala](http://degoes.net/articles/tagless-horror)\n\n\u003ca name=\"monad-stack\"\u003e\u003c/a\u003e\n## Monad stack\n\n### Talks\n\n* [Monad transformers down to earth - Gabriele Petronella](https://www.youtube.com/watch?v=jd5e71nFEZM)\n    * _Monad Transformer_\n\n* [The Eff monad, one monad to rule them all - Eric Torreborre](https://www.youtube.com/watch?v=KGJLeHhsZBo)\n    * _Eff monad_\n\n* [Monad Stacks or: How I Learned to Stop Worrying and Love the Free Monad – Harry Laoulakos](https://www.youtube.com/watch?v=2TDDDFGa8-0)\n    * _Monad Stacks_\n\n### Articles\n\n* [Monad transformer variance](https://typelevel.org/blog/2018/09/29/monad-transformer-variance.html)\n    * _Monad Transformer_\n\n* [Monadic EDSLs in Scala](https://typelevel.org/blog/2016/09/21/edsls-part-1.html)\n    * _(EDSLs) Embedded domain specific languages_\n\n* [EDSLs as functions](https://typelevel.org/blog/2016/10/26/edsls-part-2.html)\n    * _(EDSLs) Embedded domain specific languages_\n\n\u003ca name=\"free-monad\"\u003e\u003c/a\u003e\n## Free Monad\n\n### Talks\n\n* [Free monad or tagless final? How not to commit to a monad too early - Adam Warski](https://www.youtube.com/watch?v=IhVdU4Xiz2U)\n    * _Live coding session on Free monads and Tagless Final_\n\n* [Freestyle, Free \u0026 Tagless: Separation of Concerns on Steroids - Michał Płachta](https://www.youtube.com/watch?v=-4lB5EKS5Uk)\n    * _Free and Tagless in a real application_\n\n* [Move Over Free Monads: Make Way for Free Applicatives! — John de Goes](https://www.youtube.com/watch?v=H28QqxO7Ihc)\n    * _Free Applicatives_\n\n* [A Year living Freely – Chris Myers](https://www.youtube.com/watch?v=rK53C-xyPWw)\n    * _Free Monad_\n\n* [Free as in Monads by Daniel Spiewak](https://www.youtube.com/watch?v=aKUQUIHRGec)\n    * _Live coding session on Free Monad_\n\n### Articles\n\n* [Free and tagless compared - how not to commit to a monad too early](https://softwaremill.com/free-tagless-compared-how-not-to-commit-to-monad-too-early/)\n    * _Free Monad and Tagless Final_\n\n* [Free Monoids and Free Monads](http://blog.higher-order.com/blog/2013/08/20/free-monads-and-free-monoids/)\n    * _Free structure with Monoids and Monads_\n\n* [A tale of two Monads: Free vs MTL](http://tech.frontrowed.com/2017/09/28/benching-free/)\n    * _Free Monad vs MTL style_\n\n* [A tale of two Monads: Free vs MTL](https://tech.freckle.com/2017/09/28/benching-free/)\n    * _Journey through Free and MTL style_\n\n\u003ca name=\"typeclass\"\u003e\u003c/a\u003e\n## Typeclass\n\n### Talks\n\n* [Mastering Typeclass Induction — Aaron Levin](https://www.youtube.com/watch?v=Nm4OIhjjA2o)\n    * _Inductions and Typeclasses_ \n\n* [Oh, all the things you'll traverse - Luka Jacobowitz](https://www.youtube.com/watch?v=GhLqTZaix5U)\n    * _Traversable Typeclass, starting with folds all the way to Monoids and Traversable Functors_\n    \n* [Type class, ultimate ad hoc](https://www.youtube.com/watch?v=2EdQFCP5mZ8)\n    * _Parametric and ad hoc polymorphism, Typeclasses_    \n\n### Articles\n\n* [Anatomy of a type class](http://geekocephale.com/blog/2018/10/05/typeclasses)\n    * _Typeclasses, Polymorphic functions_\n\n* [Type classes in Scala](https://blog.scalac.io/2017/04/19/typeclasses-in-scala.html)\n    * _Typeclasses_\n\n* [Implicits, type classes, and extension methods](https://kubuszok.com/compiled/implicits-type-classes-and-extension-methods/)\n    * _Implicits and Typeclasses_  \n\n* [Typeclasses in perspective](https://diogocastro.com/blog/2018/06/17/typeclasses-in-perspective/) [**Haskell**]\n    * _Typeclasses, Extensibility, Conditional implementation, Polymorphism_\n\n* [Inheritance vs Generics vs Typeclasses in Scala](https://dev.to/jmcclell/inheritance-vs-generics-vs-typeclasses-in-scala-20op)\n    * _Parametric Polymorphism (generics) and Typeclasses_\n\n* [Typeclass counterexample](https://blog.functorial.com/posts/2015-12-06-Counterexamples.html) [**Haskell**]\n    * _Typeclasses_\n\n* [OOP vs. FP. The pursuit of extensibility](https://medium.com/virtuslab/oop-vs-fp-the-pursuit-of-extensibility-part-2-22a37a33d1a0)\n    * _Typeclasses_\n\n\u003ca name=\"concurrency\"\u003e\u003c/a\u003e\n## Concurrency\n\n### Talks\n\n* [Concurrency with Cats-effect - Michael Pilquist](https://www.youtube.com/watch?v=Gig-f_HXvLI)\n    * _fiber, Cats Effects, fs2_\n\n* [ATOMICALLY { DELETE YOUR ACTORS } - John A De Goes \u0026 Wiem Zine Elabadine](https://www.youtube.com/watch?v=d6WWmia0BPM\u0026list=PL8NC5lCgGs6MYG0hR_ZOhQLvtoyThURka)\n    * _ZIO, STM, Promise, Queue and more_\n\n### Articles\n\n\n\n\u003ca name=\"optics\"\u003e\u003c/a\u003e\n## Optics\n\n### Talks\n\n* [Beyond Scala Lenses — Julien Truffaut](https://www.youtube.com/watch?v=6nyGVgGEKdA)\n    * _Lenses_\n\n### Articles\n\n\n\n\u003ca name=\"recursion-schemes\"\u003e\u003c/a\u003e\n## Recursion schemes\n\n### Talks\n\n* [Pure Functional Database Programming with Fixpoint Types — Rob Norris](https://www.youtube.com/watch?v=7xSfLPD6tiQ)\n    * _Fixpoint, Recursion Schemes_\n\n* [Peeling the Banana: Recursion Schemes from First Principles - Zainab Ali](https://www.youtube.com/watch?v=XZ9nPZbaYfE)\n    * _Recursion Schemes_\n\n* [Those 10000 classes I never wrote - Valentin Kasas](https://www.youtube.com/watch?v=1TUgSaD6cCo)\n    * _Hylomorphisms, Expressive Schemes_\n\n* [Going bananas with recursion schemes for fixed point data types - Paweł Szulc](https://www.youtube.com/watch?v=IlvJnkWH6CA)\n    * _Catamorphism, Fixpoint data type, Matryoshka_\n\n### Articles\n\n* [Recursion training](https://github.com/softwaremill/recursion-training#sources-and-resources)\n    * _Resources and examples on Recursion Schemes_\n\n\u003ca name=\"theory\"\u003e\u003c/a\u003e\n## Theory\n\n### Talks\n\n* [Propositions as Types - Philip Wadler](https://www.youtube.com/watch?v=IOiZatlZtGU)    \n    * _Relation between Logic and Computation_\n    \n* [A History of Computation, Logic and Algebra](https://www.youtube.com/watch?v=c_nPnURW6BU)\n    * _Logic, Algebra and Category Theory_\n\n* [Crash course into category theory - Rúnar Bjarnason](https://www.youtube.com/watch?time_continue=2\u0026v=ml5rU06z0Fk)\n    * _Category Theory_\n\n* [Category Theory for the Working Hacker - Philip Wadler](https://www.youtube.com/watch?v=V10hzjgoklA)\n    * _Category Theory_\n\n* [Category Theory - Bartosz Milewski](https://www.youtube.com/user/DrBartosz/playlists)\n    * _Category Theory playlist_\n    \n* [Stephen Pimentel - Propositions as Types for Beginners in Haskell](https://www.youtube.com/watch?v=tfG7T54MhIU\u0026index=29\u0026t=0s\u0026list=PL7DZ7q3nEWhzLs7nLb57N75EY4py_P7pI) [**Haskell**]\n    * _Curry-Howard isomorphism_\n    \n* [Why a monad is a monoid in the category of endofunctors](https://www.youtube.com/watch?v=pvTycwaAmLo)\n    * _Functor, Natural Transformation, Bifunctor, Monoidal Category, Monoid, Monad_\n\n### Articles\n\n* [Proof and types](http://www.paultaylor.eu/~pt/stable/prot.pdf)\n    * _Type Theory_\n\n* [Category theory and programming](http://yogsototh.github.io/Category-Theory-Presentation/categories.html)\n    * _Category theory_\n\n* [Category theory material](https://www.logicmatters.net/categories/)\n    * _Category theory_\n\n* [Sequent calculus tutorial](http://logitext.mit.edu/logitext.fcgi/tutorial)\n    * _Category theory_\n\n* [A History of Computation, Logic and Algebra](https://pron.github.io/computation-logic-algebra)\n    * _Logic, Algebra and Category Theory_\n\n* [Anatomy of functors and category theory](http://geekocephale.com/blog/2019/02/16/functors-cat-theory)\n    * _Functors and Category Theory_\n\n* [Why do monads matter ?](https://cdsmith.wordpress.com/2012/04/18/why-do-monads-matter/)\n    * _Monad and Category Theory_\n\n\u003ca name=\"academic-papers\"\u003e\u003c/a\u003e\n## Academic papers\n\n* [Theorems for Free! - P. Wadler](http://ttic.uchicago.edu/~dreyer/course/papers/wadler.pdf)\n    * _Polymorphic function, Abstraction Theorem_\n\n* [Propositions as types - P. Wadler](http://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-types/propositions-as-types.pdf)\n    * _Type Theory, Programming Language_\n\n* [Freer Monads, More Extensible Effects](http://okmij.org/ftp/Haskell/extensible/more.pdf) [**Haskell**]\n    * _Extensible Effects_\n\n* [Data types a la carte](http://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdf) [**Haskell**]\n    * _Assembling Data Types and functions_\n\n* [Why Functional Programming Matters - John Hughes](https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf)\n    * _High-Order Functions (HOFs) and Lazy Evaluation_\n\n* [Algebraic effects for Functional Programming](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/08/algeff-tr-2016-v3.pdf)\n    * _Algebraic Effects, Type Inference, compilation scheme_\n\n\u003ca name=\"lectures\"\u003e\u003c/a\u003e\n## Lectures\n\n* [FP Foundation - Julien Truffaut](https://github.com/julien-truffaut/fp-foundation)\n   * _Scala course, Functional programming_\n\n* [Goteborg university - Haskell advanced Functional Programming](https://chalmers.instructure.com/courses/3766/assignments/syllabus) [**Haskell**]\n    * _Haskell course_\n\n* [Data61 Haskell functional programming course](https://github.com/data61/fp-course) [**Haskell**]\n    * _Haskell, Functional programming course_\n\n* [Google's Haskell 101 and 102](https://github.com/google/haskell-trainings) [**Haskell**]\n   * _Haskell, Functional programming, beginner friendly_\n\n* [Teaching Tech Together](http://teachtogether.tech/)\n   * _Creating good tech teaching resources_\n\n\u003ca name=\"blogs\"\u003e\u003c/a\u003e\n## Blogs\n\n* [The morning papers](https://blog.acolyer.org/)\n\n* [Typelevel](https://typelevel.org/blog/)\n\n* [SoftwareMill](https://softwaremill.com/blog/)\n\n* [J. De Goes](http://degoes.net/)\n\n* [Runar](http://blog.higher-order.com/)\n\n* [Habla](https://blog.hablapps.com/)\n\n* [Li Haoyi](http://www.lihaoyi.com/)\n\n* [Kubuszok](https://kubuszok.com/#blog)\n\n* [FP Complete](https://www.fpcomplete.com/blog) [**Haskell**]\n    \n* [Yann Esposito](http://yannesposito.com/Scratch/en/blog/)\n \n* [Mine ! :D](https://github.com/mmenestret/fp-ressources/)\n\n* [Blog: reasonably polymorphic](http://reasonablypolymorphic.com/)\n\n* [Fabio Labella writings](http://systemfw.org/writings.html)\n\n\u003ca name=\"books\"\u003e\u003c/a\u003e\n## Books\n\n* [Functional Programming in Scala](https://www.manning.com/books/functional-programming-in-scala)\n\n* [Functional and Reactive Domain Modeling](https://www.manning.com/books/functional-and-reactive-domain-modeling) \n\n* [https://underscore.io/books/scala-with-cats/](https://underscore.io/books/scala-with-cats/)\n\n* [Functional Programming for Mortals](https://leanpub.com/fpmortals/read)\n\n* Category theory for programmers\n    * [Haskell](http://www.blurb.com/b/9008339-category-theory-for-programmers) \n    * [Scala](https://github.com/typelevel/CT_from_Programmers.scala)\n\n* [A History of Computation, Logic and Algebra](https://pron.github.io/computation-logic-algebra)\n\n* [The Books of Monads](https://www.goodreads.com/book/show/42449863-the-book-of-monads) [**Scala**] [**Haskell**]\n\n* [Practical FP in Scala, A Hands-on approach](https://leanpub.com/pfp-scala) \n\n\u003ca name=\"chat-rooms\"\u003e\u003c/a\u003e\n## Chat rooms\n\n* [Scala FR gitter](https://gitter.im/scala/fr)\n\n* [Typevel General gitter](https://gitter.im/typelevel/general)\n\n* [Cats gitter](https://gitter.im/typelevel/cats)\n\n* [Functional programming Slack](https://functionalprogramming.slack.com/messages/C0436F0PY/)\n\n\u003ca name=\"newsletters\"\u003e\u003c/a\u003e\n## Newsletters\n\n* [Scalatimes](https://scalatimes.com/)\n\n* [Awesome Scala](https://scala.libhunt.com/newsletter)\n\n\u003ca name=\"podcasts\"\u003e\u003c/a\u003e\n## Podcasts\n\n* [Functional Geekery](https://www.functionalgeekery.com/)\n\n* [Co-recursive](https://corecursive.com/category/podcast/)\n\n* [FP podcast list](https://www.fpcasts.com/)\n\n\u003ca name=\"repositories\"\u003e\u003c/a\u003e\n## Repositories\n\n* [Scala pet store](https://github.com/pauljamescleary/scala-pet-store)\n    * _Http4s, Circe, Doobie, Cats, Cats Effects, ScalaCheck, Circe Config, Tagless Final_\n\n* [Befunge-93](https://github.com/SystemFw/Befunge-93)\n    * _Cats, Cats Effects, fs2, Tagless Final_\n\n* [Scala typeclassopedia](https://github.com/lemastero/scala_typeclassopedia)\n    * *Patterns from math (Category theory, Abstract algebra) in Scala*\n\n\u003ca name=\"events\"\u003e\u003c/a\u003e\n## Events\n\n* [Upcoming events - Signify technology](https://www.signifytechnology.com/events)\n\n* [Upcoming events - Scala lang](https://www.scala-lang.org/events/)\n\n* [IT conferences Call For Papers list - SoftwareMill](https://github.com/softwaremill/it-cfp-list)\n    \n## Special thanks\n\nThanks to [@olivierschultz](https://twitter.com/OlivierSchultz) who helps me maintain that list ! \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmenestret%2Ffp-resources","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmenestret%2Ffp-resources","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmenestret%2Ffp-resources/lists"}