thomascothran / fp-ts

Functional programming in TypeScript

Home Page:https://gcanti.github.io/fp-ts/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Functional programming in TypeScript

build status dependency status npm downloads

What is fp-ts?

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, Either, IO, Task, Functor, Applicative, Monad 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 (TypeScript doesn't support HKT natively).

The idea (faking higher kinded types in TypeScript) is based on Lightweight higher-kinded polymorphism

Inspired by

Table of Contents

Installation and TypeScript compatibility

To install the stable version:

npm install fp-ts

The stable version is tested against TypeScript 3.3.3, but should run with TypeScript 2.8.0+ too

Note. This library is conceived, tested and is supposed to be consumed by TypeScript with the strict flag turned on.

Note. If you are running < typescript@3.0.1 you have to polyfill the unknown type. You can use unknown-ts as a polyfill.

Note. 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).

Getting started

If you are coming from JavaScript:

If you are using ramda

If you are coming from TypeScript:

If you are coming from Haskell or Purescript:

Documentation

Blog posts

Tutorials

Beginner

Advanced

Ecosystem

Libraries

Bindings

Type Classes Diagram

(click on the diagram to enlarge)

License

The MIT License (MIT)

About

Functional programming in TypeScript

https://gcanti.github.io/fp-ts/

License:MIT License


Languages

Language:TypeScript 98.6%Language:JavaScript 1.3%Language:HTML 0.1%