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 asMonad
and widely-used data types likeOption
,Either
, andReadonlyArray
@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/*
.
To install the alpha version:
npm install @fp-ts/core
The MIT License (MIT)