Awesome Open Source
Awesome Open Source

JS/FP

A pragmatic functional programming library for JavaScript/TypeScript

Computation with monad(-like) objects

Computation with one or two values

Box: computation with one value

Pair: computation with two values

Computation with n values

List: computation with zero, one or more values

NonEmptyList: computation with one or more values

Computation with error handling

Option: computation with a value that may be present or absent

Result: synchronous computation that may succeed or fail, short-circuits when a failure occurs

Validated: like Result, but accumulates errors instead of short-circuiting

Computation with a value and a context

State: stateful computation

Writer: computation with additional data (used for logging)

Writers

StringWriter: computation with log entries concatenated to a string

ListWriter: computation with log entries concatenated to a List instance

Asynchronous computation

Future: asynchronous computation that may succeed or fail (a monadic alternative to Promises)

High-level computation

Program: interpretation of program descriptions

Functions

Action: wrapper around a function with no parameters that enables composition

Arrow: wrapper around a function with one or more parameters that enables composition and adaptation of the input

Combination

Combination with semigroups

Semigroup: a type that supports an associative binary operation

objectCombination: a function to create combination schemes for objects based on semigroups

Combination with monoids

Monoid: a semigroup with an identity element

Boolean

All: combines two booleans using logical AND

Any: combines two booleans using logical OR

Number

Min: combines two numbers, resulting in the smallest of the two

Max: combines two numbers, resulting in the largest of the two

Sum: combines two numbers, resulting in the sum of the two

Product: combines two numbers, resulting in the product of the two

Date

Earliest: combines two dates, resulting in the earlier of the two

Latest: combines two dates, resulting in the later of the two

String

StringConcatenation: combines two string using concatenation

Array

ArrayConcatenation: combines two arrays using concatenation

List

ListConcatenation: combines two lists using concatenation

Testing

Equivalence

Equivalence: testing of equivalence between two values of the same type

objectEquivalence: a function to create equivalence schemes for objects based on member equivalences

Equalities for basic types: equalities for string, number, boolean and Date values and arrays of such values

Order

Order: decision on the order of two values

Ordering: a type alias for the three possible outcomes (-1, 0 and 1)

Predicate

Predicate: wrapper around predicate functions

Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Javascript (1,059,720
Typescript (246,339
Graph (24,362
Validation (20,371
Functional Programming (10,972
Value (9,209
Futures (3,410
Monad (1,929
Functor (546
Applicative (372
Rop (361
Monoid (244
Result (150
Computation (41
Railway Oriented Programming (41