Awesome FP JS 
This is a curated list of awesome functional programming code and learning resources for JavaScript. As a multi-paradigm programming language, JavaScript can be written in many styles. With these resources we want to help you to make better use of JavaScript’s support for writing programs in a functional way.
Functional programming is a style of programming which models computations as the evaluation of expressions. Contrast this with imperative programming where programs are composed of statements which change global state when executed. Functional programming typically avoids using mutable state and favors side-effect free functions and immutable data instead. This encourages writing composable and declarative programs that are easy to reason about.
Table of Contents
- Libraries
- Data Structures
- Algebraic Data Types
- Lenses
- Functional Languages that Compile to JavaScript
- Programming Tools
- Resources
- Books
- Articles
- Videos
- Examples and Exercises
- Community
- Contribution
Tags
These may be appended to entries. Each should be preceded by a "+" or "-" to indicate presence or absence of the tag's meaning. "-" tags should only be included when they are likely to help someone filter libraries for their needs. For instance, -TS tags are probably useful for Typescript users screening for types, but -CT tags would be less likely to be helpful to anyone.
- CT. Category Theory. This library appears to be inspired by Haskell, Scala, or another functional language's library with a grounding in Category Theory.
- TS. Typescript. This library has typescript types.
Libraries
- Ramda – A practical functional library for JavaScript that is designed specifically for a functional programming style. A style that makes it easy to create functional pipelines and never mutates user data. +TS.
- Ramda Adjunct is a community-maintained extension of Ramda.
- Ramda-extension is set of utility point-free functions composed only from Ramda functions.
- Rambda - A faster alternative to Ramda in under 10kB.
- Rambdax - Extended version of Rambda
- Folktale – A standard library for functional programming in JavaScript. Typescript support expected mid-2020. -TS.
- lodash/fp – An instance of Lodash with its methods wrapped to produce immutable, auto-curried, iteratee-first, data-last methods. +TS.
- iterflow - Powerful iterator utilities for TypeScript with statistical operations, windowing, and lazy evaluation. +TS
- functional.js – A lightweight functional JavaScript library that facilitates currying and point-free / tacit programming.
- 101 – A modern and modular JavaScript utility library made to work well with vanilla JavaScript methods. -TS
- fnuc – A functional library for CoffeeScript (and JavaScript) to facilitate functional composition and higher order functions.
- barely-functional – A tiny (2.7kb) functional programming library using native ES5/6 operations. -TS.
- bluebird-promisell - A practical functional programming library for promises.
- prelude.ls – A functionally oriented utility library somewhat based off of Haskell's Prelude module. -TS.
- preludejs - Hardcore Functional Programming for JavaScript. -TS.
- 1-liners – Functional tools that couldn’t be simpler. A dead simple functional utility belt, hand-crafted with love and attention. -TS.
- fn-curry – A simple function to curry a function.
- curry – Curry your functions using function bind syntax.
- compose-function – Compose a new function from smaller functions.
- functionize – A collection of functions which aid in making non-functional libraries functional.