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/corelibrary features a new implementation of the Higher Kinded Type (HKT) pattern, including common typeclasses such asMonadand widely-used data types likeOption,Either, andReadonlyArray @fp-ts/schemaoffers schema validation with static type inference, including decoders for data structures in@fp-ts/coreand@effect/data@fp-ts/opticprovides optics for structures in both@fp-ts/coreand@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)