### Functional Programming - **The Little Idea of Functional Programming** http://jaysoo.ca/2016/01/13/functional-programming-little-ideas/ Describes the three basic principles of FP: "data in/data out", "code as data", and "function composition" all the way down, and demonstrates transforming some data. Has some _very_ helpful graphics and illustrations. - **Understanding Programmatic Side Effects** http://c2fo.io/c2fo/programming/2016/05/11/understanding-programmatic-side-effects/ A short article that explains the concept of "side effects" - **What Is Functional Programming?** http://blog.jenkster.com/2015/12/what-is-functional-programming.html Describes how side effects and "hidden inputs" add complexity to code, in very clear terms. - **Getting Functional with Javascript** http://www.datchley.name/getting-functional-with-javascript-part-1/ http://www.datchley.name/getting-functional-with-javascript-part-2/ http://www.datchley.name/getting-functional-with-javascript-part-3/ Demonstrates FP concepts by showing how to filter, group, and sort an array of data. Lots of good descriptions, samples, and explanations. - **Functional Programming for Javascript People** https://medium.com/@chetcorcos/functional-programming-for-javascript-people-1915d8775504 Tries to explain core FP concepts and patterns in understandable terms. - **Functors, Applicatives, and Monads in Pictures** http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html A long article that tries to describe several FP terms using lots of cartoons. - **A Gentle Introduction to Functional Javascript** http://jrsinclair.com/articles/2016/gentle-introduction-to-functional-javascript-intro/ http://jrsinclair.com/articles/2016/gentle-introduction-to-functional-javascript-arrays/ http://jrsinclair.com/articles/2016/gentle-introduction-to-functional-javascript-functions/ http://jrsinclair.com/articles/2016/gentle-introduction-to-functional-javascript-style/ Goes through a number of FP-related aspects in Javascript. - **Functional Thinking** http://nealford.com/functionalthinking.html An extended series of articles collected together. Aimed at Java/JVM programmers, and makes a number of comparisons of OOP vs FP. - **Functional Programing in Javascript** http://reactivex.io/learnrx/ Teaches functional programming concepts through a series of interactive exercises. Intended as a precursor to learning the Reactive Extensions for Javascript library (RxJS), but uses plain JS and teaches general concepts in the process. (Later exercises are hidden until earlier ones are completed - hit "Show Answer" and "Run" on an exercise if you want to skip ahead). - **The "Thinking Functionally" series** http://fsharpforfunandprofit.com/series/thinking-functionally.html A series of lessons teaching functional concepts using F#. Very well written, clear and easy to understand. Examples use F#, but concepts are widely applicable. - **Functional Programming in Javascript** https://www.youtube.com/watch?v=BMUiFMZr7vk&list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84 A web series by a quirky programmer showing you high level functional concepts in Javascript - **Functional Programming Jargon** https://github.com/hemanth/functional-programming-jargon A list of FP terms with easier-to-understand definitions and explanations. - **An Introduction to Reasonably Pure Functional Programming** https://www.sitepoint.com/an-introduction-to-reasonably-pure-functional-programming/ Explain four key concepts of functional programming: pure functions, immutable values, composition, and side effects - **Functors, Applicatives, and Monads in Plain English** http://www.russbishop.net/monoids-monads-and-functors An attempt to explain these concepts in reasonable terms. - **Learning Functional Programming with Javascript** https://youtu.be/e-5obm1G_FY A great talk by Anjana Vakil. Covers several basic concepts of functional programming, including some very nice examples of map/filter/reducer, a clear fdefinition of side effects, and an explanation of how specialized immutable data libraries work. - **Thinking in Ramda** http://randycoulman.com/blog/categories/thinking-in-ramda/ A series of articles digging into techniques to use with the Ramda FP utility library - **Functional Programming Isn't the Answer** http://degoes.net/articles/fp-is-not-the-answer A reminder that while FP has potential benefits, it's ultimately just a tool, and the end goal is useful software. - **An Intro to Functional Programming Concepts in Javascript** https://medium.com/@collardeau/intro-to-functional-programming-concepts-in-javascript-b0650773139c https://medium.com/@collardeau/intro-to-functional-programming-concepts-in-javascript-part-2-f45228c49eed https://medium.com/@collardeau/part-3-an-intro-to-functional-programming-concepts-in-javascript-febf9368ffe6 A multi-part series covering a number of FP concepts, how to use them in Javascript, and use of the Ramda FP utility library - **Functional-Light JS** https://github.com/getify/Functional-Light-JS This book explores the core principles of functional programming (FP) that can be applied to JavaScript. But what makes this book different is that we approach these principles without drowning in all the heavy terminology. We look at a subset of FP foundational concepts that I call "Functional-Light Programming" (FLP) and apply it to JavaScript. - **The Case for Lenses in Pragmatic Business Applications** http://www.brandonkeown.com/2016/10/lenses-for-fun-and-profit.html Demonstrates the use of Ramda's "lens" concept for encapsulating data access - **Functional Lenses, How Do They Work** https://medium.com/@dtipson/functional-lenses-d1aba9e52254 A dive into the "lens" concept, and how they can be used to manipulate data structures - **Don't Be Scared of Functional Programming** https://www.smashingmagazine.com/2014/07/dont-be-scared-of-functional-programming/ Several examples of functional programming principles, both in plain JS and with Underscore.js - **Functional Programming Basics in ES6** https://www.youtube.com/watch?v=HvMemAgOw6I Talk on functional programming with JavaScript and ES6 syntax. Covers basics such as purity, referential transparency, closures, immutability, currying, composition, and recursion. - **Dipping a toe into functional JS with lodash/fp** https://simonsmith.io/dipping-a-toe-into-functional-js-with-lodash-fp/ Examples of using Lodash's functional API for logic and React component composition - **Composability: From Callbacks to Categories in ES6** https://medium.com/@homam/composability-from-callbacks-to-categories-in-es6-f3d91e62451e Explores different solutions to "callback hell", based on various FP concepts - **So You Want To Be a Functional Programmer** https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-6-db502830403 A multi-part series on functional programming concepts and learning approaches (links to previous parts in the article). - **Higher-order functions in Lodash** http://pragmatists.pl/blog/2017/05/higher-order-functions-in-lodash/ An explanation of several FP concepts like partial application and currying, and how Lodash offers utility functions to help make use of those concepts. - **How to Draw an Owl** https://glebbahmutov.com/blog/how-to-draw-an-owl/ Demonstrates refactoring some complex imperative code into a functional approach that uses concepts like pure functions, lenses, immutable data, and the Maybe monad - **What's Functional Programming All About?** http://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAbout.html A detailed explanation of how "functional" programming differs from "imperative" programming, using a food recipe as an example of the steps involved. - **Higher Order Functions and Redux Thunk** https://medium.com/@joedski/higher-order-functions-and-redux-thunk-1e5983ae6b03 An exploration of ways to wrap behavior around thunks, including composing functions together. - **Functional Programming Jargon** https://functional.works-hub.com/blog/Functional-Programming-Jargon A large list of functional programming terms, with explanations for each and examples of those terms using JS - **Awesome FP JS** https://github.com/stoeffel/awesome-fp-js A collection of links to libraries, tools, and resources for FP usage in JS - **Currying vs Partial Application** http://www.datchley.name/currying-vs-partial-application/ A great explanation of the difference between "currying" functions and "partially applying" them - **Lodash is not (only) for list manipulation!** https://blog.pragmatists.com/lodash-is-not-only-for-list-manipulation-791c2e3b9de1 Examples of how to compose the `lodash/fp` functions to create functional data transformation pipelines.