awesome-fp-js
:sunglasses: A curated list of awesome functional programming stuff in js
https://github.com/stoeffel/awesome-fp-js
Last synced: about 14 hours ago
JSON representation
-
Community
-
Functional Languages that Compile to JavaScript
-
Lenses
- TypeScript - TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
- Elm - safe functional programming language for declaratively creating web browser-based graphical user interfaces. Implemented in Haskell.
- Fable - Compiles [F#](http://fsharp.org) to readable JavaScript.
- PureScript
- Idris
- Js\_of\_ocaml
- Reason
- ReScript - lang.org/bucklescript-rebranding)) ReScript is a type-safe language that compiles to the highest quality of clean, readable and performant JavaScript code.
- Scala.js - lang.org/) to JavaScript.
- LiveScript
- Koka - oriented programming language that seperates pure values from side-effecting computations with a familiar JavaScript like syntax.
- Gleam - Gleam is a typed, functional language that compiles to Erlang and JavaScript.
- LiveScript
- ClojureScript
- GHCJS
- RacketScript
- RamdaScript - A Lisp that compiles to opinionated JavaScript on top of RamdaJS
- Js\_of\_ocaml
- Quack - A multi-paradigm programming language with gradual and duck typing that targets PHP and JS.
- ion - no BS JS
- Reason
-
-
Resources
-
Videos
- Anjana Vakil: Learning Functional Programming with JavaScript - JSUnconf 2016 - A simple and understandable introduction of functional proramming in javascript.
- Classroom Coding with Prof. Frisby
- Hey Underscore, You're Doing It Wrong!
- Functional programming patterns for the non-mathematician
- Pure JavaScript
- Functional programming in JavaScript - A series by Mattias Petter Johansson, from the youtube channel FunFunFunction, that is specifically about popularization of functional programming in JavaScript.
- Functional Programming in TypeScript - Discover functional programming with Typescript and create a library like fp-ts alongside Sahand Javid in this beginner-friendly YouTube playlist.
- Functional Programming Basics In ES6 - A complete introduction to functional programming in javascript made it easy by ES6.
- JavaScript Programmers Should Learn Algebraic Data Types -- May 2018 -- UtahJS Lehi - Seth House explains how ADTs (Algebraic Data Types) can be useful to JavaScript developers.
- Functional programming in JavaScript - A series by Mattias Petter Johansson, from the youtube channel FunFunFunction, that is specifically about popularization of functional programming in JavaScript.
-
Books
- JavaScript Allongé
- Functional Programming in JavaScript - free explanations, this book teaches you how to apply functional programming to real-life development tasks. By Luis Atencio (2016)
- Eloquent JavaScript
- Functional JavaScript
- Grokking Simplicity - world scenarios. By [Eric Normand](https://github.com/ericnormand) (2019)
- scriptum - a no-frills functional programming library and a online course based on it
- Functional-Light JavaScript
- Professor Frisby’s Mostly Adequate Guide to Functional Programming - world examples. Strongly recommended. By [Brian Lonsdorf](https://twitter.com/drboolean) (2016)
- Functional JavaScript
-
Articles
- FP Concepts in JavaScript
- Functional programming with JavaScript
- A gentle introduction to functional JavaScript - part series introduction functional programming in JavaScript that gets you up to speed what all the hype about functional programming is all about.
- Functors from first principle - explained with JS - Explaining functors concept using JavaScript.
- Favoring Curry - Practical applications of currying using Ramda.
- Functional Mumbo Jumbo – ADTs - friendly introduction to Algebraic Data Types.
- JavaScript and Type Thinking
- Lazy, composable, and modular JavaScript - of – in conjunction with higher-order functions, function composition, and lazy evaluation, to write cleaner and more modular JavaScript.
- Why Ramda
- Monads in JavaScript
- Functional programming
- Data Structures in JavaScript
- So You Want to be a Functional Programmer - Easy to understand, with some examples, introduction to Functional Programming in Javascript and Elm.
- Functional Programming for JavaScript People - A complete introduction to functional programming patterns by Chet Corcos with a lot of javascript examples.
- Introduction to Immutable.js and Functional Programming Concepts - Learn about functional data structures and their uses in this overview of Facebook's popular library for JavaScript: Immutable.js.
- Master the JavaScript Interview: What is Functional Programming? - A simple introduction by @ericelliott to functional principles and vocabulary.
- Composing Software - A series of articles on learning functional programming and compositional software techniques in JavaScript ES6+ from the ground up by @ericelliott.
- Anonymous Recursion in JavaScript - Short and easy to understand article about implementing anonymous recursion in JavaScript.
- Functional Composition in Javascript
- Functional Programming Principles in Javascript - Practical code examples to learn functional programming concepts like pure function, immutability, first-class entities, and higher order functions
- Basic Monads in Javascript - Introduction to 2 easy monads in Javascript, Maybe & Either.
- F# for JavaScript Devs - Showcasing the similarities between F# and JavaScript
- A practical guide to writing more functional Javascript - A step by step guide to convert imperative JavaScript to more declarative, functional JavaScript.
- Why Curry Helps
- Functional programming with JavaScript
- Functional Programming Jargon
- You don't (may not) need loops ➿ - Loops are one of the first constructs that junior programmers learn, but they can pose many potential issues in the software development process, and could be avoided in many cases.
- So You Want to be a Functional Programmer - Easy to understand, with some examples, introduction to Functional Programming in Javascript and Elm.
- Functional Mumbo Jumbo – ADTs - friendly introduction to Algebraic Data Types.
- A Monad in Practicality: First-Class Failures
- Functional Composition in Javascript
- Functional Programming Principles in Javascript - Practical code examples to learn functional programming concepts like pure function, immutability, first-class entities, and higher order functions
-
Examples and Exercises
- Hardcore Functional Programming in JavaScript - by-step with how to build an example web app using abstract interfaces like Monads, Functors, Monoids and Applicatives. (_commercial_)
- Learn Rx
- functional-frontend-architecture - type-js + Flyd + Snabbdom
- functional-javascript-workshop
- Escape from Callback Mountain - Design & refactoring tips for Promise-based Functional JavaScript. Key benefits include better readability, testability, and reusability. MIT.
- FPJS-Class
- cube-composer
- FP Youtube Search
- Learn Rx
-
-
Libraries
-
- Folktale - 2020. -TS.
- lodash/fp - curried, iteratee-first, data-last methods. +TS.
- prelude.ls - TS.
- fp-dom
- Creed - minded async with advanced features: coroutines, promises, ES2015 iterables, fantasy-land. -TS.
- remeda - friendly. +TS.
- prelude.ls - TS.
- js-joda - driven and clean API based on the ISO8601 calendar.
- Ramda
- 101 - TS
- most - high performance reactive programming to help you compose asynchronous operations on streams of values and events without many of the hazards of side effects and mutable shared state.
- trifl
- 1-liners - crafted with love and attention. -TS.
- Ferrum - TS.
- futil-js - A collection of functional utilities that could conceivably be part of a library like lodash/fp, but for some reason or other are not.
- ts-pattern - The exhaustive Pattern Matching library for TypeScript, with smart type inference. Pattern Matching is a code-branching technique coming from FP languages.
- Rambda - A faster alternative to Ramda in under 10kB.
- fxts - Lazy evaluation and concurrency. +TS
- Ramda Adjunct - maintained extension of Ramda.
- react-on-lambda - Replace JSX in React with functions (currying, compositions and etc).
- rubico - 🏞 [a]synchronous functional syntax
- Rambdax - Extended version of Rambda
- iter-tools - a rich toolset for working with iterables, both sync and async. +TS.
- fp-ts - Typed functional programming in TypeScript. +CT, +TS.
- preludejs - Hardcore Functional Programming for JavaScript. -TS.
- Verticalize - Super lightweight function that looks and behaves like a pipe operator.
- true-myth - call style
- Ramda-extension - free functions composed only from Ramda functions.
- TGrid - Grid Computing Framework, Network & Thread extension of [TSTL](https://github.com/samchon/tstl), supporting RFC (Remote Function Call). +TS.
- compose-function
- fun-task
- fnuc
- zen-signals
- ts-fp-di - Tiny TypeScript functional dependency injection, based on Node.js AsyncLocalStorage. +TS
- funcy
- functionize - functional libraries functional.
- bluebird-promisell - A practical functional programming library for promises.
- ts-multimethod - TypeScript multimethods inspired by Clojure multimethods. +TS
- rocket-pipes - Powerful pipes, that chain Promise and ADT like Maybe or Either from popular FP libraries. +TS
- klubok - Pipes with easy mocking, intended for huge amount of unit tests. +TS
- context-fp - Microscopic functional programming context aka dependency injection. +TS
- RxEffects - Reactive state and effect management with RxJS. +TS
- Ditox.js - Powerful dependency injection container for building modular apps. +TS
- qio - safe, functional, performant, lawful, composable data structure that solves practical problems of effect-full code in node and browser. +TS
- lambdajs
- omg-curry - Comprehensive Curry Library with Operator Curry, Curry from functions, Decurry and Infifnite Curries.
- pico-lambda - Arrays, Strings and things the functional way. A 640b functional library based on native methods. -TS.
- fp-filters - A curated collection of 130+ common-use filter functions.
- effect-ts - fledged functional effect system for typescript with a rich standard library. +TS
- date-fp - fp are pure, autocurried and will not mutate the date objects they are applied to.
- barely-functional - TS.
- functional.js - free / tacit programming.
- fn-curry
- curry
- \_part\_
- FPO.js - argument style methods.
- fpEs - A small library provides simple usages of basic FP & pattern-matching/sumtype & MonadIO/Rx & Optional for Javascript. -TS.
- Creed - minded async with advanced features: coroutines, promises, ES2015 iterables, fantasy-land. -TS.
- lfi - A Lazy Functional Iteration Library Supporting Sync, Async, and Concurrent Iteration.
- hyogwa - Natural 🌿 effect system that fits TypeScript; Write codes as you write **plain typescript code**.
- PureEval - A powerful JavaScript functional programming toolset, including utility functions and abstract data structures.
- ts-belt - Fast, modern, and practical utility library for FP in TypeScript. (Uses a data-first approach like remeda, but is [faster](https://mobily.github.io/ts-belt/benchmarks/v3.7.0/macbook-air-2020) than remeda, ramda, rambda, and lodash/fp.)
-
Algebraic Data Types
- Fantasy Land
- crocks - TS.
- purify - Functional programming library for TypeScript focusing on ADTs. +CT, +TS.
- NeverThrow - This package contains a `Result` type that represents either success (`Ok`) or failure (`Err`).
- immutable-ext - js).
- Pratica - Small, simple, easy FP data types for pragmatic and productive developers who need to ship reliable code fast. +CT, +TS.
- union-type
- monet.js
- freeky
- fantasy-combinators
- fantasy-birds
- kudo-js - A small utility library with a set of Algebraic Data Types and Helper functions to help you write code in a functional programming style in Javascript
- MojiScript - an async-first, opinionated, and functional language designed to have 100% compatibility with JavaScript engines
- sweet-monads - A collection of popular monads (such as `Either` and `Maybe`) and the lazy iterator.
-
Lenses
- ramda-lens
- partial.lenses - performance optics library for JavaScript.
- shades - inspired lens-like library for Javascript.
- nanoscope
- lenses
- optics
- fantasy-lenses
-
Data Structures
- Baobab
- Lazy.js
- collectable - performance immutable data structures for modern JavaScript and TypeScript applications. +TS.
- List - An extremely fast immutable list with a comprehensive functional API. Designed to [seamlessly integrate with Ramda](https://github.com/funkia/list#seamless-ramda-integration).
- Mori
- Icepick
- TSTL - C++ STL (Standard Template Library) is implemented in TypeScript. STL Containers, iterators, algorithms and functors, that following functional programming rule, are provided. +TS.
- DerivableJS
- immutable-sequence.js
- imlazy
- Immutable.js
- Immer - on-write mechanism. +TS.
- Timm
- prelude.ts - Immutable persistent collections, functional constructs such as Option and Either, and combinators. Implemented in Typescript but supports javascript too. +CT, +TS.
-
-
Programming Tools
-
Lenses
- eslint-plugin-fp - ESLint rules for functional programming
- hm-def
- 4.5 - oriented assertions that are lazy and monadic.
-
Programming Languages
Categories
Sub Categories
Keywords
functional-programming
27
javascript
21
typescript
19
ramda
9
fp
9
functional
7
promise
6
immutable
5
monad
5
utils
4
ts
4
functor
3
injection
3
composition
3
iterator
3
nodejs
3
monads
3
di
3
dependency
3
pipe
3
utilities
3
fantasy-land
3
async
3
education
2
lazy
2
typescript-definitions
2
algebraic-data-types
2
recursion
2
either
2
extensions
2
library
2
lodash
2
functional-js
2
maybe
2
data-structures
2
pointfree
2
operator
2
fold
2
react
2
js
2
f-algebras
2
generator
2
mock
2
adt
2
curry
2
context
2
container
2
pipeline
2
redux
1
immutable-lists
1