A Learning Path for Functional Programming
<samp>

# Resources

## Table of Content

- [Foundation](#foundation)
- [Why Functional](#why-functional)
- [Advanced Topics](#advanced-topics)
- [Talks](#talks)
- [Books](#books)
- [Declarative Programming](#declarative-programming)
- [Blogs](#blogs)
- [Projects](#projects)
- [Podcasts](#podcasts)
- [Courses](#courses)
- [Lists](#lists)
- [Community](#community)
- [JavaScript](https://github.com/imteekay/functional-programming-learning-path/tree/master/javascript)
- [Rust](https://github.com/imteekay/functional-programming-learning-path/tree/master/rust)
- [Clojure](https://github.com/imteekay/functional-programming-learning-path/tree/master/clojure)
- [Python](https://github.com/imteekay/functional-programming-learning-path/tree/master/python)
- [Ruby](https://github.com/imteekay/functional-programming-learning-path/tree/master/ruby)
- [Programming Challenges](https://github.com/imteekay/functional-programming-learning-path/tree/master/programming_challenges)

## Foundation

- [Functional Programming Learning Path](https://purelyfunctional.tv/learning-paths/functional-programming/)
- [Introduction to Funcional Programming - edX](https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0)
- [Como programar funcional?](https://www.youtube.com/watch?v=jIYfTKYXJr8)
- [Demystifying functional programming](https://medium.com/building-nubank/demystifying-functional-programming-in-a-real-company-e954a2591504)
- [Programação Funcional para iniciantes](https://medium.com/trainingcenter/programa%C3%A7%C3%A3o-funcional-para-iniciantes-9e2beddb5b43)
- [Awesome Functional Programming](https://github.com/xgrommx/awesome-functional-programming)
- [Functional Programming Jargon](https://github.com/hemanth/functional-programming-jargon)
- [Your functional journey](https://purelyfunctional.tv/guide/your-functional-journey/)
- [The Benefits of Pure Functions](https://alvinalexander.com/scala/fp-book/benefits-of-pure-functions)
- [Pure Functions](https://www.sitepoint.com/functional-programming-pure-functions/)
- [Functional Koans](https://github.com/relevance/functional-koans)
- [Programação funcional, imutabilidade, e previsibilidade](https://mauricioszabo.wordpress.com/2016/03/22/programacao-funcional-imutabilidade-e-previsibilidade/)
- [A practical introduction to functional programming](https://maryrosecook.com/blog/post/a-practical-introduction-to-functional-programming)
- [An introduction to functional programming](https://codewords.recurse.com/issues/one/an-introduction-to-functional-programming)
- [Software Composition](https://medium.com/javascript-scene/composing-software-an-introduction-27b72500d6ea)
- [Functional Education](http://bitemyapp.com/posts/2014-12-31-functional-education.html)
- [What is functional?](https://dev.to/drbearhands/functional-fundamentals-what-is-functional-l66)
- [Types as propositions, programs as proofs](https://dev.to/drbearhands/functional-fundamentals-types-as-propositions-programs-as-proofs-56gh)
- [So You Want to be a Functional Programmer (Part 1)](https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-1-1f15e387e536)
- [So You Want to be a Functional Programmer (Part 2)](https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-2-7005682cec4a)
- [So You Want to be a Functional Programmer (Part 3)](https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-3-1b0fd14eb1a7)
- [So You Want to be a Functional Programmer (Part 4)](https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-4-18fbe3ea9e49)
- [So You Want to be a Functional Programmer (Part 5)](https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-5-c70adc9cf56a)
- [So You Want to be a Functional Programmer (Part 6)](https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-6-db502830403)
- [Friendly Functional Programming](https://functional.works-hub.com/learn/friendly-functional-programming-b3e93)
- [Practical Functional Programming](https://hackernoon.com/practical-functional-programming-6d7932abc58b)
- [Destroy All Ifs](http://degoes.net/articles/destroy-all-ifs)
- [THE PILLARS OF FUNCTIONAL PROGRAMMING (PART 1)](https://sigma.software/about/media/pillars-functional-programming-part-1)
- [Functional Programming Patterns: Cookbook](https://medium.com/@karthikiyengar/functional-programming-patterns-cookbook-3a0dfe2d7e0a)

## Higher Order Functions

- [Getting a handle on Reduce](https://adambard.com/blog/getting-a-handle-on-reduce/)

## Immutability

- [Immutability - something worth striving for](https://dev.to/rwoodnz/immutability---something-worth-striving-for-3ppp)
- [Why shared mutable state is the root of all evil](http://henrikeichenhardt.blogspot.com/2013/06/why-shared-mutable-state-is-root-of-all.html)
- [Immutable data](https://www.sitepoint.com/functional-programming-ruby-value-objects/)
- [Thoughts on Immutability, CI/CD, FP](https://www.infoq.com/podcasts/Vitor-Olivier)

## Why Functional

- [Why functional programming matters](https://hackernoon.com/why-functional-programming-matters-c647f56a7691)
- [Why Functional Programming?](https://purelyfunctional.tv/article/why-functional-programming/)
- [Advantages of Functional Programming](https://blog.codeship.com/advantages-of-functional-programming/)
- [Pros and cons of functional programming](https://itnext.io/pros-and-cons-of-functional-programming-32cdf527e1c2)
- [What are the benefits of functional programming?](https://stackoverflow.com/a/128128/3159162)
- [Benefits of Functional Programming](https://alvinalexander.com/scala/fp-book/benefits-of-functional-programming)
- [Benefits of Functional Programming beyond map/filter/reduce](https://www.youtube.com/watch?v=oaa4XiwEq1E&ab_channel=Jfokus)
- [Benefits of Functional Programming by Example](https://medium.com/@nickmccurdy/benefits-of-functional-programming-by-example-76f1135b0b18)
- [Goodbye, Object Oriented Programming](https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53)
- [Switching from OOP to Functional Programming](https://medium.com/@olxc/switching-from-oop-to-functional-programming-4187698d4d3)

## Advanced Topics

- [Transducers: Efficient Data Processing Pipelines in JavaScript](https://medium.com/javascript-scene/transducers-efficient-data-processing-pipelines-in-javascript-7985330fe73d)
- [Functors, Monads and better functions](https://dev.to/drbearhands/functors-monads-and-better-functions-26f3)
- [Why Curry Helps](https://hughfdjackson.com/javascript/why-curry-helps/)
- [Curry and Function Composition](https://medium.com/javascript-scene/curry-and-function-composition-2c208d774983)
- [Functional JavaScript: Function Composition For Every Day Use](https://hackernoon.com/javascript-functional-composition-for-every-day-use-22421ef65a10)
- [A Modern Architecture for FP](http://degoes.net/articles/modern-fp)
- [Modern Functional Programming: Part 2](http://degoes.net/articles/modern-fp-part-1)
- [Functional Programming, Abstraction, and Naming Things](http://www.stephendiehl.com/posts/abstraction.html)
- [SOLID: the next step is Functional](http://blog.ploeh.dk/2014/03/10/solid-the-next-step-is-functional/)
- [Functional Design Patterns](https://www.youtube.com/watch?reload=9&v=srQt1NAHYC0&ab_channel=NDCConferences)
- [Free Monads Explained (pt 1)](https://medium.com/@olxc/free-monads-explained-pt-1-a5c45fbdac30)
- [Perpetual Currying in JavaScript](https://medium.com/@paramsingh_66174/perpetual-currying-in-javascript-5ae1c749adc5)

## Advanced Topics: Category Theory

- [From design patterns to category theory by Mark Seemann](http://blog.ploeh.dk/2017/10/04/from-design-patterns-to-category-theory/)

## Talks

- [Functional programming design patterns by Scott Wlaschin](https://www.youtube.com/watch?v=E8I19uA-wGY&ab_channel=IvanPlyusnin)
- [Why Functional Programming Matters by John Hughes](https://www.youtube.com/watch?v=XrNdvWqxBvA&ab_channel=ConfEngine)

## Books

- [How to Design Programs](https://htdp.org/2019-02-24/)
- [Category Theory for Programmers](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/)
- [SICP - Structure and Interpretation
  of Computer Programs](https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html)

## Declarative Programming

- [What is declarative programming?](https://stackoverflow.com/a/129639/3159162)
- [Declarative vs Imperative Programming by Ian Mundy](https://codeburst.io/declarative-vs-imperative-programming-a8a7c93d9ad2)
- [Imperative vs Declarative Programming by Tyler McGinnis](https://tylermcginnis.com/imperative-vs-declarative-programming/)
- [Imperative versus declarative code… what’s the difference?](https://medium.com/front-end-hacking/imperative-versus-declarative-code-whats-the-difference-adc7dd6c8380)

## Blogs

- [Patterns in Functional Programming](https://patternsinfp.wordpress.com/)
- [Kevin Sookocheff - Functional Programming](https://sookocheff.com/tags/functional-programming/)

## Projects

- [YouTube instant search with FP](https://jaysoo.ca/2016/01/13/functional-programming-little-ideas/)

## Podcasts

- [Programação Funcional com Erick Pintor e Bruno Tavares](http://tecnologicamentearretado.com.br/2014/12/31/programacao-funcional-com-erick-e-bruno/)
- [Programação Funcional com Juliano alves](https://www.tecnoretorica.com.br/2013/04/programacao-funcional/)
- [Programação Funcional - Inviavel Podcast](http://inviavelpodcast.com/10/)
- [CapyCast #10 Linguagens Funcionais Com Marcelo Camargo e Derek Stavis](https://player.fm/series/capycast/capycast-10-linguagens-funcionais-com-marcelo-camargo-e-derek-stavis)
- [The Imposter's Handbook: Functional Programming and Databases](https://www.orbit.fm/bookbytes/17)
- [Functional Programming Languages and the Pursuit of Laziness with Dr. Simon Peyton Jones](https://player.fm/series/microsoft-research-podcast-1910051/ep-056-rerun-functional-programming-languages-and-the-pursuit-of-laziness-with-dr-simon-peyton-jones)

## Courses

- [Functional Programming Principles in Scala](https://www.coursera.org/learn/progfun1)
- [Introduction to Functional Programming](https://www.edx.org/course/introduction-to-functional-programming)

## Lists

- [Awesome Functional Programming](https://github.com/lucasviola/awesome-functional-programming)
- [Awesome Functional Programming](https://github.com/xgrommx/awesome-functional-programming)

## Community

- Richard Bird
- Philip Wadler
- Olivier Danvy
- Andrzej Filinski
- Daniel P. Friedman
- Matthias Felleisen
- J. Michael Ashley
- R. Kent Dybvig
- Erik Hilsdale

## License

[MIT](/license) © [TK](https://iamtk.co)

</samp>
