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:
@fp-ts/core
with the newHKT
implementation and the most common typeclasses such asMonad
@fp-ts/data
withOption
,Either
,ReadonlyArray
,List
and the most common data structures together with data related typeclasses (i.e.Compactable
, etc)@fp-ts/optics
with an optic implementation that will provide also optics for structures in@fp-ts/data
@fp-ts/codec
with a concrete codec such asio-ts
again for all the structures in@fp-ts/data
And for Effect
to have:
@effect/core
with the effect system@effect/query
with the query impl@effect/*
every other effect based impl
Note that Effect
will not have base structures like Option
/ Either
/ List
and typeclasses like Monad
/ Functor
and fp-ts
will not have effect execution modules like Task
/ IO
as both projects are made to be the same ecosystem and each answer a specific set of needs in the best way possible.
To install the pre-alpha version:
npm install @fp-ts/core
The MIT License (MIT)