# Functional programming

## Notes

* [A monad is an abstraction that can be used to parametrize code with the way how computations are sequenced. A monad can also be seen as design pattern, that sometimes makes your code more readable (and, more often, less readable).](https://binaryanalysisplatform.github.io/bap/api/master/Monads.Std.html)
* Think of monads as of codification of imperative effectful computations in a more general way.
* [Monads are a pattern of using types to encapsulate some data.](https://www.reddit.com/r/Clojure/comments/9cpyqc/should_i_learn_haskell_to_reveal_functional/)
* [Ah, the functional paradigm. Your brain is screwing with you. You have to stop thinking about telling computer when to do things, you know, do this, then do this, then do this... let computer decide when to do what. Your brain is confused and is trying to tell computer in which order to do things, but did you ever think about the order when creating Excel spreadsheet with formulas? Clojure is like Excel. You focus on the formulas, and Clojure figures out order of execution.](https://www.reddit.com/r/Clojure/comments/9geecc/how_does_anyone_learn_this/)

## Links

* [List of FP Resources](http://themattchan.com/blog/fp-resources.html)
* [Teens and Functional Programming](https://jozefg.bitbucket.io/posts/2013-09-08-teens-and-fp.html)
* [Conversations with a six-year-old on functional programming](https://byorgey.wordpress.com/2018/05/06/conversations-with-a-six-year-old-on-functional-programming/)
* [FP Resources](https://github.com/allenleein/brains/projects/9?fullscreen=true)
* [OOS is dead only if FP is dead](https://speakerdeck.com/staltz/oop-is-dead-only-if-fp-is-dead?slide=1)
* [Total functional programming (ESFP) literature](https://github.com/mietek/total-functional-programming#readme)
* [Having an Effect by Oleg Kiselyov](https://www.youtube.com/watch?v=GhERMBT7u4w)
* [Monads Demystified (2015)](http://blog.reverberate.org/2015/08/monads-demystified.html)
* [Can functional programming be liberated from the von Neumann paradigm?](http://conal.net/blog/posts/can-functional-programming-be-liberated-from-the-von-neumann-paradigm) ([HN](https://news.ycombinator.com/item?id=18692470))
* [COMP 212: Functional Programming Course (2019)](http://dlicata.web.wesleyan.edu/teaching/fp-s19/) - Purpose of this course is to introduce the theory and practice of functional programming (FP).
* [Research papers / Functional pearls](https://wiki.haskell.org/Research_papers/Functional_pearls) - Functional pearls are elegant, instructive examples of functional programming.
* [Effects bibliography](https://github.com/yallop/effects-bibliography#readme) - Collaborative bibliography of work related to the theory and practice of computational effects.
* [Flerp’s Guide to Functional Programming](https://github.com/jeppes/flerps-functional#readme) - Collection of the resources I've found most useful when exploring the world of functional programming.
* [George Wilson - The Extended Functor Family (2016)](https://www.youtube.com/watch?v=JZPXzJ5tp9w)
* [Functional Programming for the Long Haul by Michael Snoyman (2019)](https://www.youtube.com/watch?v=DdR9q69se-I)
* [Selective Applicative Functors](https://www.staff.ncl.ac.uk/andrey.mokhov/selective-functors.pdf) - Declare Your Effects Statically, Select Which to Execute Dynamically.

## Images

![](https://i.imgur.com/nSrcdxd.png)
