Functional programming in TypeScript
Credits and sponsorship
This library was inspired by the following projects:
A huge thanks to my sponsors who made the development of @fp-ts/core
possible.
If you also want to become a sponsor to ensure this library continues to improve and receive maintenance, check out my GitHub Sponsors profile
Requirements
- TypeScript 4.8 or newer
- The
strict
flag enabled in your tsconfig.json
file
{
// ...
"compilerOptions": {
// ...
"strict": true,
}
}
Typed functional programming in TypeScript
This project represents the next major iteration of fp-ts
and it's objective is a reconciliation with @effect
in order to unify the ecosystems.
The @effect
project will reduce it's scope to simply being an effect system and will delegate to fp-ts org
all the lower level abstractions such as typeclasses and common data structures.
The objective of the fp-ts org
in github and in npm (@fp-ts
) is to simplify structure and management of the project, have smaller and better scoped packages.
Our "current" idea (that is well open for changes) is for fp-ts org
to have:
- The
@fp-ts/core
library features a new implementation of the Higher Kinded Type (HKT) pattern, including common typeclasses such as Monad
and widely-used data types like Option
, Either
, and ReadonlyArray
@fp-ts/schema
offers schema validation with static type inference, including decoders for data structures in @fp-ts/core
and @effect/data
@fp-ts/optic
provides optics for structures in both @fp-ts/core
and @effect/data
For those using fp-ts
v2 and its ecosystem, roughly these are the equivalents:
Note that @fp-ts/core
will not contain any effect system (e.g. Task
, TaskEither
, ReaderTaskEither
) since the handling of effects is entirely delegated to the packages contained in @effect/*
.
Installation
To install the alpha version:
npm install @fp-ts/core
Warning. This package is primarily published to receive early feedback and for contributors, during this development phase we cannot guarantee the stability of the APIs, consider each release to contain breaking changes.
Documentation
License
The MIT License (MIT)