Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gcanti/fp-ts
Functional programming in TypeScript
https://github.com/gcanti/fp-ts
algebraic-data-types functional-programming typescript
Last synced: 4 months ago
JSON representation
Functional programming in TypeScript
- Host: GitHub
- URL: https://github.com/gcanti/fp-ts
- Owner: gcanti
- License: mit
- Created: 2017-01-25T17:44:09.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-01-29T08:46:00.000Z (5 months ago)
- Last Synced: 2024-02-29T12:04:53.187Z (4 months ago)
- Topics: algebraic-data-types, functional-programming, typescript
- Language: TypeScript
- Homepage: https://gcanti.github.io/fp-ts/
- Size: 22 MB
- Stars: 10,347
- Watchers: 105
- Forks: 505
- Open Issues: 187
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Lists
- awesome-fast-check - fp-ts
- awesome-list - fp-ts
- awesome-stars - fp-ts
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - fp-ts
- my-awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-luooooob - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - fp-ts
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- my-awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-functional-frontend - fp-ts
- awesome - fp-ts - Functional programming in TypeScript (TypeScript)
- my-awesome-starred - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - fp-ts
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (typescript)
- awesome-github-star - fp-ts
- awesome-typescript-functional-programming - fp-ts - Functional programming in TypeScript (Libraries)
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-ccamel - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- awesome-stars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
- my-awesome - gcanti/fp-ts - data-types,functional-programming,typescript pushed_at:2024-05 star:10.6k fork:0.5k Functional programming in TypeScript (TypeScript)
- awesome - gcanti/fp-ts
- jimsghstars - gcanti/fp-ts - Functional programming in TypeScript (TypeScript)
README
![]()
Functional programming in TypeScript# Introduction
`fp-ts` is a library for _typed functional programming_ in TypeScript.
`fp-ts` aims to allow developers to use _popular patterns and abstractions_ that are available in most functional languages. For this, it includes the most popular data types, type classes and abstractions such as [Option](https://gcanti.github.io/fp-ts/modules/Option.ts), [Either](https://gcanti.github.io/fp-ts/modules/Either.ts), [IO](https://gcanti.github.io/fp-ts/modules/IO.ts), [Task](https://gcanti.github.io/fp-ts/modules/Task.ts), [Functor](https://gcanti.github.io/fp-ts/modules/Functor.ts), [Applicative](https://gcanti.github.io/fp-ts/modules/Applicative.ts), [Monad](https://gcanti.github.io/fp-ts/modules/Monad.ts) to empower users to write pure FP apps and libraries built atop higher order abstractions.
A distinctive feature of `fp-ts` with respect to other functional libraries is its implementation of [Higher Kinded Types](), which TypeScript doesn't support natively.
**Inspired by**
- [Haskell](https://www.haskell.org)
- [PureScript](https://www.purescript.org)
- [Scala](https://www.scala-lang.org)# Sponsors
![]()
Unsplash
https://unsplash.com/
The internet’s source for visuals.
Powered by creators everywhere.
# Installation
To install the stable version:
```
npm install fp-ts
```Make sure to always have a single version of `fp-ts` installed in your project. Multiple versions are known to cause `tsc` to hang during compilation. You can check the versions currently installed using `npm ls fp-ts` (make sure there's a single version and all the others are marked as `deduped`).
## TypeScript compatibility
**Strictness** – This library is conceived, tested and is supposed to be consumed by TypeScript with the `strict` flag turned on.
| `fp-ts` version | required `typescript` version |
| --------------- | ----------------------------- |
| 2.0.x+ | 3.5+ |
| 1.15.x+ | 3.1+ |
| <= 1.14.4 | 2.8+ (\*) |(\*) If you are running `< [email protected]` you have to polyfill the `unknown` type. You can use [unknown-ts](https://github.com/gcanti/unknown-ts) as a polyfill.
# Documentation
**Disclaimer**. Teaching functional programming is out of scope of this project, so the documentation assumes you already know what FP is.
- [Docs](https://gcanti.github.io/fp-ts)
- [Learning Resources](https://gcanti.github.io/fp-ts/learning-resources/)
- [Ecosystem](https://gcanti.github.io/fp-ts/ecosystem/)
- API Reference
- [version 2.x (current)](https://gcanti.github.io/fp-ts/modules/)
- [version 1.x](https://github.com/gcanti/fp-ts/tree/1.x/docs/modules/)# Help
If you need help with `fp-ts` check out:
- this [Discord server](https://discord.gg/HVWmBBXM8A)
- the `#fp-ts` channel on [FP slack](https://fpslack.com/).# Development
- [Code conventions](https://gcanti.github.io/fp-ts/guides/code-conventions)
# License
The MIT License (MIT)