This repository is my aggregation of ideas I've found valuable when trying to understand functional programming. It contains talks to start understanding FP, articles and ramblings I've written, papers that have changed the history of computer science, and other useful materials.
If you enjoy watching talks and/or want to understand what FP is all about, this is a great place to start.
Talks on Functional Programming
Learning Functional Programing as an Object Oriented Developer is a set of excercises a group (or individual) can go through (each takes about an hour) to start understanding the ideas that lie at the core of functional programming. This is targeted at developers coming from an OOP/imperative coding style.
Mostly disjoint and incomplete thoughts on why FP concepts have made me a less shitty developer.
- When to use Map vs forEach - When and why do you want to use Map vs ForEach (or Select vs ForEach in C#)
- YouDontKnowFunctionalProgramming the Medium article or YouDontKnowFunctionalProgramming this repository's version - What are the fundamentals of FP? (It isn't immutable data and doesn't cover lambda calculus)
- Stop Using For Loops - Stop writing the same code over and over. Remember the DRY principle?
This was an attempt to explore with some functional code snippets and ideas. There are more examples and refactoring excercises in the Refactor-Spectacular repository.
Soon to come: A larger C# code base done in a functional style, using the Language-Ext 'base class' library
There is more cleanup to do before its posted, but hopefully it should be available soon.
In no particular order:
- Professor Frisby's Mostly adequate guide to Functional Programming by Dr. Boolean (Brian Lonsdorf) - (Free) Quite good, a bit quirky
- Functional-Light JavaScript by Kyle Simpson - (Free) From the author of 'You Don't Know JS' is a great intro to functional programming in Javascript
- Functional Programming in C# - (Paid)Excellent book if you're coming from C#
- Patterns For Clarity and Reusability - Interface, Domain, Clients - Think 'Onion Architecture' but a simpler implementation for smaller projects.
Check out the 'Papers' folder for writings, mostly older than I am, which will rock your world once you understand them.
Here are some people in the functional programming community worth paying attention to. (This is a very short, very incomplete list)
Notes on things I really dont understand, but hope to one day, but probaly wont.