User Experience on mobile might not be great yet, but I'm working on it.

Your first time on this page? Allow me to give some explanations.

Awesome Functional Programming

A curated list of awesome functional programming stuff in js

Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.

Last Update: Oct. 28, 2021, 3:01 a.m.

Thank you stoeffel & contributors
View Topic on GitHub:
stoeffel/awesome-fp-js

Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.

Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.

Libraries

Practical functional Javascript

21.29K
1.36K
21d
MIT

Ramda Adjunct is the most popular and most comprehensive set of functional utilities for use with Ramda, providing a variety of useful, well tested functions with excellent documentation.

548
80
8m
BSD-3-Clause

🤘Utility library for functional JavaScript. With ❤️ to Ramda.

137
25
8m
Apache-2.0

Faster and smaller alternative to Ramda

1.05K
60
8m
MIT

Extended version of Rambda

126
17
1y 31d
MIT

A modern JavaScript utility library delivering modularity, performance, & extras.

51.09K
6.04K
6m
n/a

A modern JS utility library

1.55K
81
3y 6m
MIT

a functional library for coffeescript (and javascript)

12
1
5y 10m
n/a

tiny (2.7kb) functional programming library using native es5/6 operations

96
10
4y 3d
n/a

A practical functional programming library for promises

47
4
3y 10m
MIT

Hardcore Functional Programming for JavaScript

84
4
1y 6m
MIT

Functional tools that couldn’t be simpler.

751
60
2y 4m
MIT

A simple function to curry a function with an arbitrary number of arguments.

5
2
7y 9m
n/a

Currying made simple.

82
7
6y 5d
MIT

Function composition

48
3
6y 25d
MIT

A library which aids in making any JavaScript library more functional.

49
0
6y 7m
MIT
144
12
7y 113d
n/a

A JavaScript library for building React applications in more functional way. Alternative to JSX.

189
42
1y 9m
MIT

[DEFUNCT] trifling functional views

37
1
4y 7m
n/a

An experiment in adding functional pattern matching to JavaScript

248
23
3y 5m
n/a

Functional programming date manipulation library

123
17
3y 5m
n/a

Immutable date and time library for javascript

1.29K
101
11m
n/a

Make native methods available as partially applied functions.

43
2
7y 8m
MIT

[Unmaintained: please use jsverify instead] A property-based testing library for clearly specifying code invariants and behaviour.

79
4
7y 7m
MIT

FP library for JavaScript. Supports named-argument style methods.

420
20
2y 104d
MIT

Javascript Generalized Parser Combinators

109
10
1y 27d
LGPL-2.1

Abstraction for managing asynchronous code in JS

363
17
3y 17d
MIT

Ultra-high performance reactive programming

3.34K
230
1y 19d
MIT

☯ The simplest signal library possible

38
1
1y 4m
n/a

Functional Programming Library for JavaScript, TypeScript and Flow ✨⚡️

596
27
2y 93d
Apache-2.0

pico sized functional library

71
6
3y 11m
MIT

An extremely small, intuitive and fast functional utility library for JavaScript

251
20
3y 28d
n/a

Functional Programming for EcmaScript(Javascript)

38
4
1y 78d
MIT

TypeScript Grid Computing Framework supporting RFC (Remote Function Call)

75
14
9m
MIT

Features from the rust language in javascript: Provides Traits/Type classes & an advanced library for working with sequences/iterators in js

440
20
8m
Apache-2.0

The iterable toolbox

91
14
8m
MIT

F(unctional) util(ities). Resistance is futile.

549
49
9m
MIT

[a]synchronous functional programming

123
12
8m
MIT

Powerful pipes for TypeScript, that chain Promise and ADT for you 🚌 -> ⛰️ -> 🚠 -> 🏂 -> 🚀

6
0
10m
MIT

Curry All Code

132
5
10m
n/a

🦥 A lazy functional iteration library supporting sync, async, and concurrent iteration.

15
0
59d
Apache-2.0

TypeScript multimethods inspired by Clojure multimethods

0
0
18d
MIT

Tiny TypeScript functional dependency injection, based on Node.js AsyncLocalStorage

0
0
17d
MIT

A Fully-fledged functional effect system for typescript with a rich standard library

508
36
13d
MIT
69
4
1y 8d
n/a

A standard library for functional programming in JavaScript. Typescript support expected mid-2020. -TS.

A lightweight functional JavaScript library that facilitates currying and point-free / tacit programming.

A functionally oriented utility library somewhat based off of Haskell's Prelude module. -TS.

Sophisticated and functionally-minded async with advanced features: coroutines, promises, ES2015 iterables, fantasy-land. -TS.

Typed functional programming in TypeScript. +CT, +TS.

A function library roughly subsetting Ramda, but written in Typescript and thus more type-friendly. +TS.

Data Structures

Utilities for treating frozen JavaScript objects as persistent immutable collections

393
36
1y 11m
MIT

Immutable persistent data collections for Javascript which increase efficiency and simplicity.

31.52K
1.85K
5d
MIT

Create the next immutable state by mutating the current one

19.38K
543
8m
MIT

ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript

3.3K
147
6y 119d
n/a

JavaScript & TypeScript persistent and optionally immutable data tree with cursors.

3.05K
129
9m
MIT

High performance implementation of Immutable Sequence in JavaScript, based on Finger Tree.

18
0
6y 81d
n/a

Like Underscore, but lazier

5.98K
297
3y 95d
MIT

Functional Reactive State for JavaScript and TypeScript

505
22
3y 7m
Apache-2.0

😴 Functional programming with lazy immutable iterables

88
3
8m
MIT

High-performance immutable data structures for modern JavaScript and TypeScript applications. Functional interfaces, deep/composite operations API, mixed mutability API, TypeScript definitions, ES2015 module exports.

233
13
3y 9m
MIT

🐆 An immutable list with unmatched performance and a comprehensive functional API.

1.57K
48
1y 51d
MIT

Functional programming, immutable collections and FP constructs for typescript and javascript

311
15
11m
ISC

TypeScript-STL (Standard Template Library, migrated from C++)

395
36
9m
MIT

Immutability helpers with fast reads and acceptable writes.

Algebraic Data Types

Specification for interoperability of common algebraic structures in JavaScript

8.71K
349
1y 4m
MIT

Specification for common algebraic structures in JavaScript based on Fantasy Land

697
45
2y 65d
MIT

fantasyland extensions for immutablejs

472
26
3y 4m
ISC

Library for creating tagged constructors.

631
41
2y 0d
MIT

Refuge from unsafe JavaScript

2.69K
102
1y 60d
MIT

A small JavaScript library for defining and using union types.

471
29
2y 4m
MIT

Free monad Collection

158
14
5y 55d
MIT

Fantasy Land compliant (monadic) alternative to Promises

2.07K
86
10m
MIT

Common combinators.

64
7
5y 9m
n/a

port of the haskell package Data.Aviary.Birds. Every thing for your combinatory needs.

73
7
5y 8m
n/a

A collection of well known Algebraic Data Types for your utter enjoyment.

1.42K
108
1y 30d
ISC

A utility library to write code in functional programming style in Javascript

19
1
9m
MIT

Functional programming library for TypeScript - https://gigobyte.github.io/purify/

828
33
8m
ISC

MojiScript is an async-first, opinionated, and functional library

143
18
9m
MIT

🥃 Functional Algebraic Data Types

242
10
9m
Apache-2.0

🔧 Tifi solves a problem of the existence of both undefined and null. Inspired by the OCaml/Reason utilities for various data types.

47
0
1y 6m
MIT

A library that assists functional programming by providing a rich set of Monads and other useful functions. +CT, +TS.

Lenses

Composable kmett style lenses

210
13
6y 32d
n/a

Profunctor implementation of Lenses, Prisms, Traversals, Isos, etc.

83
4
5y 5m
n/a

Lens library built on ramda

182
15
4y 4m
n/a

Composable, immutable getters and setters.

109
9
5y 9m
n/a

A Lens Library for Javascript

175
2
6y 4m
MIT

Partial lenses is a comprehensive, high-performance optics library for JavaScript

843
37
2y 8m
MIT

A lodash-inspired lens-like library for Javascript

370
13
1y 7m
MIT

Functional Languages that Compile to JavaScript

Clojure to JS compiler

8.59K
753
9m
EPL-1.0

Haskell to JavaScript compiler, based on GHC

2.41K
174
1y 8m
MIT

Converts Elixir to JavaScript

1.47K
65
2y 70d
MIT

A multi-paradigm programming language with gradual and duck typing that targets PHP and JS

309
31
3y 11m
GPL-3.0

יון no BS JS (under heavy dev)

75
3
4y 46d
n/a

Lisp that compiles to JavaScript in the Ramda way

128
4
3y 9m
MIT

Racket to JavaScript Compiler

337
14
8m
MIT

Elm

A type-safe functional programming language for declaratively creating web browser-based graphical user interfaces. Implemented in Haskell.

Compiles F# to readable JavaScript.

A small strongly typed programming language that compiles to JavaScript.

A general purpose pure functional programming language with dependent types.

Compiles OCaml bytecode to JavaScript, making it possible to run OCaml programs in the browser.

Reason is a new interface to OCaml, a highly expressive dialect of the ML language featuring type inference and static type checking.

Bucklescript) ReScript is a type-safe language that compiles to the highest quality of clean, readable and performant JavaScript code.

Compiles Scala to JavaScript.

LiveScript has a straightforward mapping to JavaScript and allows you to write expressive code devoid of repetitive boilerplate.

Koka is a function-oriented programming language that seperates pure values from side-effecting computations with a familiar JavaScript like syntax.

A typed superset of JavaScript that compiles to plain JavaScript.

Programming Tools

ESLint rules for functional programming

855
43
3y 8m
MIT

Monadic Assertions library

20
0
4y 8m
MIT

Runtime type checking for JS with Hindley Milner signatures

169
12
1y 11m
MIT

ftor enables ML-like type-directed, functional programming with Javascript including reasonable debugging.

43
1
3y 7m
MIT

Books

Mostly adequate guide to FP (in javascript)

19.8K
1.63K
8m
n/a

Pragmatic, balanced FP in JavaScript. @FLJSBook on twitter.

13.92K
1.67K
1y 7m
n/a

A fool's scriptum on functional programming

248
15
1y 56d
MIT

the “Six” edition. Starts with as little as possible about functions – but no less! – and builds up towards powerful combinators and decorators. A foundational book. By Reginald Braithwaite (2016)

teaches JavaScript developers functional techniques that will improve extensibility, modularity, reusability, testability, and performance. Through concrete examples and jargon-free explanations, this book teaches you how to apply functional programming to real-life development tasks. By Luis Atencio (2016)

A modern introduction to programming using JavaScript. By Marijn Haverbeke (2014)

teaches how to create code that’s beautiful, safe, and simple to understand and test by using JavaScript’s functional programming support. By Michael Fogus (2013)

teaches functional programming from first principles. It uses JavaScript for all code examples and it uses real-world scenarios. By Eric Normand (2019)

Articles

Jargon from the functional programming world in simple terms!

13.98K
816
1y 35d
MIT

Avoid The One-off Problem, Infinite Loops, Statefulness and Hidden intent.

586
22
1y 5m
n/a

An introduction to Functional Programming Concepts in JavaScript. Uses the Ramda library to teach the concepts of composition, pointfree style, and functors through the simplest of examples.

Another introduction to Functional Programming in JavaScript with a focus on three key themes: computation as the application of functions, statelessness, avoiding side effects.

A four-part series introduction functional programming in JavaScript that gets you up to speed what all the hype about functional programming is all about.

A short overview of how to write reusable and declarative code using currying.

Practical applications of currying using Ramda.

A beginner-friendly introduction to Algebraic Data Types.

Learn to reason about your JavaScript code with type thinking. Algebraic Data Types are introduced as a conceptual basis to reason about program entities.

Use four new features of ES6 – iterables, generators, fat arrows, and for-of – in conjunction with higher-order functions, function composition, and lazy evaluation, to write cleaner and more modular JavaScript.

To those not used to functional programming, Ramda seems to serve no purpose whatsoever. However, it does offer a different style of coding, a style that’s taken for granted in purely functional programming languages: Ramda makes it simple for you to build complex logic through functional composition.

An introduction to the Monad design pattern in JavaScript.

A walk through some practical use cases for specific monadic structures in JavaScript: use the Maybe monad to handle simple failure cases and model more complex scenarios with the Either monad or the Validation applicative functor.

Many articles on various aspects of functional programming in JavaScript by Gleb Bahmutov.

A series of blog posts that reimplements various data structures in JavaScript to better understand their benefits and downsides.

Easy to understand, with some examples, introduction to Functional Programming in Javascript and Elm.

A complete introduction to functional programming patterns by Chet Corcos with a lot of javascript examples.

Learn about functional data structures and their uses in this overview of Facebook's popular library for JavaScript: Immutable.js.

A simple introduction by @ericelliott to functional principles and vocabulary.

A series of articles on learning functional programming and compositional software techniques in JavaScript ES6+ from the ground up by @ericelliott.

Short and easy to understand article about implementing anonymous recursion in JavaScript.

Step by step explanation of how to compose functions in javascript.

Practical code examples to learn functional programming concepts like pure function, immutability, first-class entities, and higher order functions

Introduction to 2 easy monads in Javascript, Maybe & Either.

Showcasing the similarities between F# and JavaScript

A step by step guide to convert imperative JavaScript to more declarative, functional JavaScript.

Videos

A series that builds a “practical” web application with React and functional programming in JavaScript.

Underscore.js claims to be a functional programming library, but is it really?

Learn about practical use cases for functors, applicatives, and monads.

Christian Johansen will show you how you can significantly up your game by leaving loops behind and embracing functions as the primary unit of abstraction.

A series by Mattias Petter Johansson, from the youtube channel FunFunFunction, that is specifically about popularization of functional programming in JavaScript.

A simple and understandable introduction of functional proramming in javascript.

A complete introduction to functional programming in javascript made it easy by ES6.

Seth House explains how ADTs (Algebraic Data Types) can be useful to JavaScript developers.

Examples and Exercises

Learning the functional paradigm with js

94
19
6y 90d
MIT

A functional javascript workshop. No libraries required (i.e. no underscore), just ES5.

1.96K
440
4y 11m
n/a

A functional frontend framework.

1.4K
93
5y 11m
MIT

A puzzle game inspired by functional programming

1.72K
75
1y 11m
MIT

YouTube search app with ReactJS, Redux, and FP concepts

58
7
4y 9m
n/a

Example Project & Guide for mastering Promises in Node/JavaScript. Feat. proposed 'Functional River' pattern

249
25
1y 9m
MIT

Learn to apply techniques from the forefront of computer science research to solve practical problems in Javascript. Discover functional programming and see it demonstrated step-by-step with how to build an example web app using abstract interfaces like Monads, Functors, Monoids and Applicatives. (commercial)

Dozens of exercises with solutions and explanations.

A series of interactive exercises introducing five basic ingredients of functional (reactive) programming: the map, filter, concatAll, reduce, and zip functions.

Related Lists

A curated list of awesome functional reactive programming stuff in js

268
15
5y 9m
n/a

A curated list of functional programming resources such as blog posts, communities, discussion topics, wikis and more.

637
44
1y 8m
n/a

Yet another resource for collecting articles, videos etc. regarding functional programming

2.6K
257
1y 6m
n/a

A Learning Path for Functional Programming

580
64
9m
MIT

Talk

Community with a friendly channel for JavaScript as well as many other channels about functional programming in general.