Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Categories
  3. JavaScript
  4. Functional Programming

Functional Programming

The "Awesome Functional Programming" project is a curated collection of resources dedicated to the functional programming paradigm, which emphasizes the use of pure functions and immutable data. This list includes libraries, frameworks, tutorials, articles, and community resources that span various programming languages such as Haskell, Scala, and JavaScript. It is beneficial for both beginners looking to grasp the fundamentals of functional programming and experienced developers seeking to deepen their knowledge or explore advanced concepts. Users can find a wealth of information to enhance their coding practices and embrace the functional programming approach in their projects.

functional-programminghaskellscalajavascriptpure-functionsimmutable-dataprogramming-paradigms
RSSView on GitHub
6.0k stars393 forks0 contributorsUpdated
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub

Table of Contents

5 sections · 182 projects

Libraries

63 projects
Ramda
Ramda

A practical functional library for JavaScript programmers emphasizing immutability and currying.

JavaScript24,0541 month ago
ramda-adjunct
ramda-adjunct

The most popular and comprehensive set of functional utilities for use with Ramda.

JavaScript6879 hours ago
Ramda-extension
Ramda-extension

A utility library extending Ramda with additional functional programming helpers for JavaScript.

HTML1671 year ago
rambda
rambda

A TypeScript-focused functional programming utility library designed for use with R.pipe and strict currying.

TypeScript1,7555 days ago
Rambdax
Rambdax

Extended version of Rambda, a functional programming utility library with additional methods and TypeScript support.

JavaScript2231 year ago
Folktale
folktale.origamitower.com
functional.js
functional.js

A lightweight, TypeScript-first functional programming library for JavaScript with auto-currying and point-free style.

TypeScript2247 months ago
101
101

A modular JavaScript utility library designed to complement ES5+ with functional programming paradigms and avoid overlap.

JavaScript1,5404 years ago
fnuc
fnuc

A functional programming library for CoffeeScript and JavaScript, providing standard methods as pure functions for composition.

CoffeeScript1610 years ago
barely-functional
barely-functional

A tiny (2.7KB) functional programming library with autocurried functions and Maybe types for safe operations.

JavaScript1058 years ago
bluebird-promisell
bluebird-promisell

A functional programming library for promises that enables composable async code with utilities like liftp, traversep, and foldp.

JavaScript448 years ago
prelude.ls
gkz.github.io
preludejs
preludejs

A modular ES6 implementation of Haskell's Prelude library providing functional, point-free utilities for JavaScript.

TypeScript1011 month ago
1-liners
1-liners

A dead simple functional utility belt with 137+ one-liner functions, each following strict functional programming principles.

JavaScript7993 years ago
fn-curry
fn-curry

A lightweight utility to curry functions with any number of arguments in JavaScript.

JavaScript612 years ago
curry
curry

A JavaScript library for simple and flexible function currying with placeholder support.

JavaScript876 years ago
compose-function
compose-function

A JavaScript utility to compose functions, enabling the creation of new functions from smaller ones like f(g(x)).

JavaScript566 years ago
functionize
functionize

A library that converts non-functional JavaScript libraries into functional ones with currying, fixed arity, and data-last arguments.

JavaScript5011 years ago
lambdajs
lambdajs

A functional, curried, and pure reimplementation of the full ECMAScript API.

JavaScript14212 years ago
fp-dom
github.com
react-on-lambda
react-on-lambda

A JavaScript library for building React applications using functional programming patterns as an alternative to JSX.

JavaScript2632 years ago
trifl
trifl

A functional web client UI library with unidirectional data flow and virtual DOM, emphasizing functions over components.

JavaScript349 years ago
funcy
funcy

An experimental JavaScript library that adds functional pattern matching with concise syntax and efficient matching algorithms.

JavaScript2498 years ago
date-fp
date-fp

A functional programming utility library for immutable and pure date manipulation in JavaScript.

JavaScript1196 years ago
js-joda
js-joda

Immutable date and time library for JavaScript, ported from Java's ThreeTen backport with a domain-driven API.

JavaScript1,66514 days ago
_part_
_part_

A micro library that enables functional programming by converting native methods into partially applied functions.

JavaScript4212 years ago
FPO.js
FPO.js

A functional programming library for JavaScript that uses named-argument style methods to eliminate parameter order concerns.

JavaScript4524 years ago
Javascript Parser Combinator
Javascript Parser Combinator

A JavaScript library for building parsers using functional parser combinators, inspired by Haskell's Parsec.

JavaScript1516 months ago
fun-task
fun-task

A functional abstraction for managing asynchronous computations in JavaScript with cancellation support.

JavaScript3744 years ago
Most.js
Most.js

A high-performance reactive programming library for JavaScript with monadic streams.

JavaScript3,4903 years ago
zen-signals
zen-signals

A minimal observable library focused on readability and educational value for understanding reactive programming concepts.

TypeScript523 years ago
funfix
funfix

A functional programming library for JavaScript, TypeScript, and Flow, providing type classes and data types inspired by Scala, Cats, and Monix.

TypeScript6272 years ago
pico-lambda
pico-lambda

A 640-byte functional library that curries and composes native JavaScript array and string methods.

JavaScript718 years ago
pareto-js
pareto-js

A minimal, fast functional utility library for JavaScript with only 14 pure functions.

TypeScript2615 years ago
fpEs
fpEs

A lightweight functional programming library for JavaScript providing core utilities like Maybe, MonadIO, pattern matching, and pub/sub.

JavaScript431 day ago
Creed
blog.briancavalier.com
TGrid
TGrid

TypeScript RPC framework for WebSocket and Worker protocols, enabling grid computing and remote function calls.

TypeScript1678 months ago
Ferrum
Ferrum

A JavaScript library bringing Rust-inspired features like Traits, lazy iterators, and content-based hashing to enhance functional programming.

JavaScript5291 year ago
fp-ts
gcanti.github.io
iter-tools
iter-tools

A comprehensive suite of utility methods for working with JavaScript iterables and async iterables.

JavaScript1891 year ago
remeda
remedajs.com
futil-js
futil-js

A collection of functional utilities that complement lodash/fp with async support, lenses, aspects, and tree operations.

JavaScript1,0432 years ago
rubico
rubico

A JavaScript library for asynchronous functional programming that treats promises as values.

JavaScript2831 month ago
rocket-pipes
rocket-pipes

A TypeScript library providing powerful pipes that seamlessly chain Promises and FP algebraic data types like Maybe and Either.

TypeScript264 days ago
omg-curry
omg-curry

A feature-complete JavaScript library for currying and uncurrying functions with infinite and lazy evaluation support.

JavaScript1345 years ago
lfi
lfi

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

TypeScript3488 months ago
ts-multimethod
ts-multimethod

A TypeScript library for creating multimethods with compile-time exhaustive pattern matching and type narrowing, inspired by Clojure.

TypeScript45 months ago
ts-fp-di
ts-fp-di

A tiny TypeScript functional dependency injection library based on AsyncLocalStorage for Node.js and Deno.

TypeScript51 year ago
effect-ts
effect-ts

A TypeScript framework providing a functional effect system for building robust, production-ready applications.

TypeScript15,9144 hours ago
qio
qio

A type-safe, functional, composable effect management data structure for Node.js and browser environments.

TypeScript744 years ago
Ditox.js
Ditox.js

A lightweight dependency injection container for TypeScript with functional API and React integration.

TypeScript1031 month ago
RxEffects
RxEffects

A reactive state and effect management library using RxJS with MVC-like architecture for building business logic.

TypeScript372 years ago
@fxts/core
@fxts/core

A functional programming library for TypeScript/JavaScript with lazy evaluation and strong type inference.

TypeScript1,16610 days ago
ts-belt
mobily.github.io
true-myth
true-myth

Safe, idiomatic TypeScript library for handling null, errors, and async operations with Maybe, Result, and Task types.

TypeScript1,3637 hours ago
ts-pattern
ts-pattern

An exhaustive pattern matching library for TypeScript with smart type inference and expressive API.

TypeScript15,14717 hours ago
hyogwa
hyogwa

A natural effect system for TypeScript that encodes side effects as types using plain functions and generators.

TypeScript622 years ago
Verticalize
Verticalize

A pipe-like function to write cleaner, more readable JavaScript code by transforming nested calls into vertical pipelines.

JavaScript3032 years ago
PureEval
PureEval

A compact JavaScript functional programming toolkit with utility functions, abstract data structures, and lazy evaluation.

JavaScript342 years ago
context-fp
context-fp

A microscopic functional programming context library for TypeScript that provides dependency injection and state management without classes or decorators.

TypeScript21 year ago
klubok
klubok

A TypeScript library for do-notation pipelines with automatic context passing and easy mocking for unit testing.

TypeScript25 months ago
fp-filters
fp-filters

A curated collection of 130+ functional programming array filter functions for TypeScript/JavaScript.

TypeScript871 year ago
tinyeffect
tinyeffect

A tiny TypeScript library for handling side effects using algebraic effects with type safety.

TypeScript381 year ago

Data Structures

14 projects
Icepick
Icepick

A tiny, zero-dependency library for treating frozen JavaScript objects as persistent immutable collections using structural sharing.

JavaScript4215 years ago
immutable
immutable

Immutable persistent data collections for JavaScript that increase efficiency and simplify application development.

TypeScript33,0345 days ago
Immer
Immer

Create immutable JavaScript states by writing mutative code, simplifying state management in React and beyond.

JavaScript28,9823 days ago
mori
mori

A JavaScript library providing ClojureScript's persistent data structures and functional APIs for immutable data manipulation.

Clojure3,3706 months ago
Baobab
Baobab

A JavaScript & TypeScript persistent and optionally immutable data tree with cursors for managing application state.

JavaScript3,1554 years ago
immutable-sequence.js
immutable-sequence.js

A high-performance immutable sequence implementation in JavaScript using Finger Tree data structure.

JavaScript1511 years ago
Timm
guigrpa.github.io
Lazy.js
Lazy.js

A functional JavaScript utility library with lazy evaluation for optimal performance and memory efficiency.

JavaScript5,9666 years ago
DerivableJS
DerivableJS

A lightweight functional reactive state container for JavaScript and TypeScript with declarative effects management.

JavaScript5198 years ago
imlazy
imlazy

A functional programming library for creating lazy, immutable iterables using ES2015 iteration protocols.

JavaScript1045 months ago
collectable
collectable

A suite of high-performance, persistent immutable data structures for modern JavaScript and TypeScript applications.

TypeScript2803 years ago
List
List

A fast immutable list data structure for JavaScript with a comprehensive functional API and seamless Ramda integration.

TypeScript1,6502 years ago
prelude.ts
prelude.ts

A TypeScript library providing persistent immutable collections and functional programming constructs like Option, Either, and Future.

TypeScript3842 years ago
TSTL
TSTL

A TypeScript implementation of the C++ Standard Template Library (STL) with containers, algorithms, and functors.

TypeScript6313 months ago

Algebraic Data Types

18 projects
Fantasy Land
Fantasy Land

A specification for interoperability of common algebraic structures in JavaScript, enabling functional programming patterns.

JavaScript10,2381 year ago
Static Land
Static Land

A specification for common algebraic structures in JavaScript using static functions instead of methods.

JavaScript7756 years ago
immutable-ext
immutable-ext

Fantasyland algebraic data type extensions for Immutable.js, adding Monoid, Applicative, and Traversable capabilities.

JavaScript4897 years ago
daggy
daggy

A JavaScript library for creating tagged constructors and sum types with minimal boilerplate.

JavaScript7075 years ago
Sanctuary
Sanctuary

A JavaScript functional programming library providing total functions, algebraic data types, and rigorous type checking for safer code.

JavaScript3,0511 year ago
monet.js
cwmyers.github.io
union-type
union-type

A small JavaScript library for defining and using union types with associated data.

JavaScript4797 years ago
freeky
freeky

A JavaScript library providing free monads for IO, Maybe, Either, Cont, and custom types with multiple interpreters.

JavaScript1768 years ago
Fluture
Fluture

A Fantasy Land compliant, monadic alternative to JavaScript Promises with lazy evaluation and cancellation.

JavaScript2,4932 years ago
fantasy-combinators
fantasy-combinators

A collection of common combinators used in fantasy-land projects for functional programming in JavaScript.

JavaScript6610 years ago
fantasy-birds
fantasy-birds

A JavaScript port of Haskell's Data.Aviary.Birds, providing a collection of combinators for functional programming.

JavaScript9410 years ago
crocks
crocks

A JavaScript library providing a collection of Algebraic Data Types (ADTs) like Maybe and Either for functional programming.

JavaScript1,5963 years ago
kudo-js
kudo-js

A utility library providing Algebraic Data Types and helper functions for functional programming in JavaScript.

TypeScript237 months ago
purify
purify

A functional programming library for TypeScript with an elegant, type-safe API and Fantasy Land conformance.

TypeScript1,6058 months ago
MojiScript
MojiScript

An async-first, opinionated functional library and language with 100% JavaScript compatibility.

JavaScript1473 years ago
Pratica
Pratica

A pragmatic JavaScript library providing functional algebraic data types (Maybe, Result) with a simplified API for safe data handling.

TypeScript4902 years ago
sweet-monads
sweet-monads

A lightweight TypeScript/JavaScript library providing easy-to-use monads, interfaces, and lazy iterators.

TypeScript3551 year ago
NeverThrow
NeverThrow

A TypeScript/JavaScript library providing a Result type for type-safe error handling without exceptions.

TypeScript7,7056 months ago

Lenses

7 projects
lenses
lenses

A JavaScript library providing composable functional lenses for immutable data manipulation.

JavaScript21611 years ago
optics
optics

A JavaScript implementation of profunctor optics for functional programming, providing lenses, prisms, traversals, and isos.

JavaScript8710 years ago
ramda-lens
ramda-lens

A functional lens library for JavaScript built on Ramda, enabling immutable data manipulation.

JavaScript1849 years ago
fantasy-lenses
fantasy-lenses

Composable, immutable getters and setters for nested data structures in JavaScript.

JavaScript10810 years ago
nanoscope
nanoscope

A lens library for JavaScript that enables safe access and immutable transformations of complex data structures.

CSS1789 years ago
partial.lenses
partial.lenses

A comprehensive, high-performance optics library for JavaScript that provides lenses, traversals, and isomorphisms to manipulate immutable JSON data.

JavaScript9234 years ago
shades
shades

A lodash-inspired lens library for JavaScript that simplifies immutable updates and data traversal with type safety.

JavaScript4182 years ago

Functional Languages that Compile to JavaScript

19 projects
ClojureScript
ClojureScript

A compiler that transforms Clojure code into optimized JavaScript, leveraging the Google Closure compiler for production builds.

Clojure9,39329 days ago
Elm
elm-lang.org
Fable
fable.io
PureScript
purescript.org
Idris
idris-lang.org
GHCJS
GHCJS
Haskell2,6173 years ago
ElixirScript
ElixirScript

Converts Elixir code to JavaScript, enabling developers to write JavaScript using Elixir syntax and semantics.

Elixir1,5657 years ago
Js_of_ocaml
ocsigen.org
Reason
reasonml.github.io
ReScript
rescript-lang.org
Scala.js
scala-js.org
LiveScript
gkz.github.io
Quack
Quack

A multi-paradigm programming language with gradual and duck typing that compiles to PHP, Python, and JavaScript.

PHP3266 years ago
ion
ion

A minimal functional language that compiles to JavaScript, emphasizing immutability, currying, and Fantasy Land libraries.

JavaScript809 years ago
RamdaScript
RamdaScript

A Lisp dialect that compiles to JavaScript, using Ramda as its standard library and emphasizing functional programming.

JavaScript1318 years ago
RacketScript
RacketScript

An experimental lightweight Racket to JavaScript (ES6) compiler that enables interoperability between both ecosystems.

Racket145 years ago
Koka
microsoft.com
TypeScript
typescriptlang.org
Gleam
gleam.run

Programming Tools

3 projects
fp
fp

An ESLint plugin that enforces functional programming principles by restricting mutation and side effects.

JavaScript9685 years ago
4.5
4.5

A functional, curried, and monadic assertions library for JavaScript and TypeScript tests.

TypeScript219 years ago
Hindley Milner Definitions
Hindley Milner Definitions

Runtime type checking for JavaScript functions using Hindley Milner type signatures.

JavaScript2043 years ago

Books

8 projects
Professor Frisby’s Mostly Adequate Guide to Functional Programming
Professor Frisby’s Mostly Adequate Guide to Functional Programming

A practical guide to functional programming concepts using JavaScript as the learning language.

JavaScript23,8252 years ago
Functional-Light JavaScript
Functional-Light JavaScript

A pragmatic, balanced approach to functional programming concepts applied to JavaScript, focusing on practical application over heavy terminology.

JavaScript16,7362 years ago
JavaScript Allongé
leanpub.com
Functional Programming in JavaScript
manning.com
Eloquent JavaScript
eloquentjavascript.net
Functional JavaScript
shop.oreilly.com
Grokking Simplicity
manning.com
scriptum
scriptum

A functional programming library for JavaScript/Node.js focused on string processing, regular expressions, and linear algebra.

JavaScript3811 year ago

Articles

27 projects
FP Concepts in JavaScript
medium.com
Functional programming with JavaScript
stephen-young.me.uk
A gentle introduction to functional JavaScript
jrsinclair.com
Functors from first principle - explained with JS
dev.to
Why Curry Helps
hughfdjackson.com
Favoring Curry
fr.umio.us
Functional Mumbo Jumbo – ADTs
blog.jenkster.com
JavaScript and Type Thinking
medium.com
Lazy, composable, and modular JavaScript
codewords.recurse.com
Why Ramda
fr.umio.us
Monads in JavaScript
curiosity-driven.org
A Monad in Practicality: First-Class Failures
web.archive.org
Functional programming
glebbahmutov.com
Functional Programming Jargon
Functional Programming Jargon

A glossary of functional programming terms explained with simple definitions and JavaScript examples.

18,6492 years ago
Data Structures in JavaScript
blog.benoitvallon.com
So You Want to be a Functional Programmer
medium.com
Functional Programming for JavaScript People
medium.com
Introduction to Immutable.js and Functional Programming Concepts
auth0.com
Master the JavaScript Interview: What is Functional Programming?
medium.com
Composing Software
medium.com
Anonymous Recursion in JavaScript
dev.to
Functional Composition in Javascript
joecortopassi.com
Functional Programming Principles in Javascript
medium.freecodecamp.org
Basic Monads in Javascript
dev.to
F# for JavaScript Devs
dev.to
A practical guide to writing more functional Javascript
medium.com
You don't (may not) need loops
You don't (may not) need loops

A guide and code examples for replacing loops with recursion, higher-order functions, and functional patterns in JavaScript.

1,1741 year ago

Videos

9 projects
Classroom Coding with Prof. Frisby
youtube.com
Hey Underscore, You're Doing It Wrong!
youtube.com
Functional programming patterns for the non-mathematician
youtube.com
Pure JavaScript
vimeo.com
Functional programming in JavaScript
youtube.com
Functional Programming in TypeScript
youtube.com
Anjana Vakil: Learning Functional Programming with JavaScript
youtube.com
Functional Programming Basics In ES6
youtube.com
JavaScript Programmers Should Learn Algebraic Data Types -- May 2018 -- UtahJS Lehi
youtube.com

Examples and Exercises

8 projects
FPJS-Class
FPJS-Class

A JavaScript-based course for learning functional programming concepts through practical exercises.

JavaScript9411 years ago
functional-javascript-workshop
functional-javascript-workshop
JavaScript2,0406 years ago
functional-frontend-architecture
functional-frontend-architecture

A functional frontend framework implementing the Elm architecture with pure functions, unidirectional data flow, and modular design.

JavaScript1,4367 years ago
cube-composer
cube-composer

A puzzle game that teaches functional programming concepts by manipulating colored cubes with function transformations.

PureScript2,0473 years ago
FP Youtube Search
FP Youtube Search

A YouTube search application demonstrating functional programming concepts with React and Redux.

JavaScript579 years ago
Hardcore Functional Programming in JavaScript
frontendmasters.com
Escape from Callback Mountain
Escape from Callback Mountain

A guide and example project demonstrating the Functional River pattern for refactoring callback-based JavaScript into modular, promise-based pipelines.

JavaScript2563 years ago
Functional programming
reactivex.io

Related Lists

5 projects
Awesome FRP JS
Awesome FRP JS

A curated list of awesome functional reactive programming libraries, resources, and tools for JavaScript.

2876 years ago
lucasviola/Awesome Functional Programming
lucasviola/Awesome Functional Programming

A curated collection of functional programming resources including blog posts, papers, books, videos, and tools.

1,0092 years ago
xgrommx/Awesome Functional Programming
xgrommx/Awesome Functional Programming

A curated collection of articles, videos, books, and libraries about functional programming across multiple languages.

3,5312 years ago
Functional Programming Resources In JavaScript
Functional Programming Resources In JavaScript

A curated collection of resources for learning and applying functional programming concepts in JavaScript.

3026 years ago
tk-learning-center/Functional Programming Learning Path
tk-learning-center/Functional Programming Learning Path

A curated collection of resources for learning functional programming concepts across multiple languages.

Clojure1,0421 year ago

Talk

1 projects
Functional Programming Slack channel
fpslack.com

Related Awesome Lists

📦
30 Seconds of Code

The "Awesome 30 Seconds of Code" project is a curated collection of code snippets that can be understood in just 30 seconds, aimed at enhancing the learning experience for developers. This list covers a wide range of programming languages and concepts, including JavaScript, Python, and more, featuring snippets for common tasks, algorithms, and utilities. It is particularly beneficial for beginners looking to grasp programming fundamentals quickly, as well as experienced developers seeking to refresh their knowledge or discover new techniques. With this resource, users can easily find and implement useful code snippets to improve their coding efficiency and problem-solving skills.

127.3k
📦
Must Watch Talks

The "Awesome Must Watch Talks" project is a curated collection of impactful talks and presentations that cover a wide range of topics, including technology, personal development, design, and innovation. This list features TED Talks, conference presentations, and keynotes from industry leaders, providing insights and inspiration for viewers. It is beneficial for anyone looking to expand their knowledge, from beginners seeking motivation to experienced professionals wanting to stay updated on trends and ideas. Users can discover thought-provoking content that encourages personal growth and professional development, making it a valuable resource for lifelong learners.

13.6k
📦
Tips

The "Awesome Tips" project is a curated collection of practical advice and strategies across various domains. This list encompasses tips on productivity, coding best practices, personal development, and effective communication, among others. It serves as a valuable resource for beginners seeking guidance as well as experienced individuals looking to refine their skills and approaches. By providing insights and actionable suggestions, this project aims to empower users to enhance their daily routines and professional endeavors. Dive in to discover tips that can transform your workflow and personal growth journey.

12.5k
📦
ESLint

The "Awesome ESLint" project is a curated collection of resources dedicated to ESLint, a popular static code analysis tool for identifying and fixing problematic patterns in JavaScript code. This list encompasses a wide range of resources including plugins, configurations, rules, integrations with various frameworks, and community contributions. It serves as a valuable asset for developers of all levels, from beginners looking to improve code quality to experienced developers aiming to enforce consistent coding standards across large projects. By utilizing the resources found here, users can enhance their coding practices and maintain cleaner, more reliable codebases.

4.7k