# Feature catalog — gcanti/fp-ts

> Canonical page: https://codevetter.com/unpack/fp-ts/feature-catalog

# Feature catalog — gcanti/fp-ts

Scanned commit c0a6472121c67a2b083e62fcff13e7d022e39d8f (2026-04-20). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The user-facing surface consists of TypeScript APIs for representing values, composing computations, and selecting algebraic behavior. The inspected modules cover optionality, typed failures, asynchronous effects, functional collections, explicit environments, state, and accumulated output. Generic algorithms let callers choose execution and combination policies through instances. This catalog groups the examined capabilities and does not claim exhaustive coverage of every exported symbol.
- Option exposes None/Some, nullable conversion, exception-to-None conversion, map/flatMap, pattern matching, and lazy fallback extraction through getOrElse. — [src/Option.ts#L114-L151](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Option.ts#L114-L151) [src/Option.ts#L336-L337](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Option.ts#L336-L337) [src/Option.ts#L1008-L1035](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Option.ts#L1008-L1035) [src/Option.ts#L871-L901](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Option.ts#L871-L901)
- Either models Left<E>/Right<A>, maps successful values, sequences computations with error unions, and converts synchronous exceptions using a caller-provided onThrow function. — [src/Either.ts#L116-L168](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Either.ts#L116-L168) [src/Either.ts#L470-L471](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Either.ts#L470-L471) [src/Either.ts#L1393-L1399](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Either.ts#L1393-L1399)
- Task and TaskEither support lazy asynchronous computation, parallel or sequential application, indexed traversal, Promise adapters, and acquire/use/release composition. — [src/Task.ts#L109-L138](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Task.ts#L109-L138) [src/TaskEither.ts#L249-L271](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/TaskEither.ts#L249-L271) [src/TaskEither.ts#L875-L892](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/TaskEither.ts#L875-L892) [src/TaskEither.ts#L1501-L1519](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/TaskEither.ts#L1501-L1519)
- Array and ReadonlyArray provide mapping, flattening, optional lookup/update, sorting by Ord, filterMap, and traversal parameterized by an Applicative. — [src/Array.ts#L1538-L1538](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Array.ts#L1538-L1538) [src/Array.ts#L1589-L1613](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Array.ts#L1589-L1613) [src/ReadonlyArray.ts#L848-L851](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/ReadonlyArray.ts#L848-L851) [src/ReadonlyArray.ts#L1763-L1797](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/ReadonlyArray.ts#L1763-L1797)
- ReadonlyMap supports equality-based key lookup and copy-on-change upsert; ReadonlySet builds deduplicated sets and performs union/intersection using a supplied Eq rather than relying only on native identity. — [src/ReadonlyMap.ts#L201-L218](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/ReadonlyMap.ts#L201-L218) [src/ReadonlyMap.ts#L295-L316](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/ReadonlyMap.ts#L295-L316) [src/ReadonlySet.ts#L41-L54](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/ReadonlySet.ts#L41-L54) [src/ReadonlySet.ts#L197-L218](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/ReadonlySet.ts#L197-L218)
- Eq provides custom equality and structural/tuple composition; Ord adds comparison and tuple ordering; Apply.sequenceT and sequenceS collect heterogeneous effects into tuples or records. — [src/Eq.ts#L26-L77](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Eq.ts#L26-L77) [src/Ord.ts#L27-L54](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Ord.ts#L27-L54) [src/Apply.ts#L588-L598](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Apply.ts#L588-L598) [src/Apply.ts#L702-L713](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Apply.ts#L702-L713)
- ReaderTaskEither combines dependencies with typed asynchronous failures, State exposes get/put/modify and result/state projections, and Writer exposes tell/listen plus Monoid-driven accumulation. — [src/ReaderTaskEither.ts#L586-L595](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/ReaderTaskEither.ts#L586-L595) [src/State.ts#L38-L62](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/State.ts#L38-L62) [src/State.ts#L248-L261](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/State.ts#L248-L261) [src/Writer.ts#L160-L189](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Writer.ts#L160-L189)
- Additional examined APIs include Tree.make/getEq, These's simultaneous Both case, Json.parse/stringify, and lazy console and Math.random wrappers. — [src/Tree.ts#L43-L83](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Tree.ts#L43-L83) [src/These.ts#L61-L71](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/These.ts#L61-L71) [src/Json.ts#L37-L67](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Json.ts#L37-L67) [src/Random.ts#L9-L27](https://github.com/gcanti/fp-ts/blob/c0a6472121c67a2b083e62fcff13e7d022e39d8f/src/Random.ts#L9-L27)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
