# gcanti/fp-ts

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/gcanti-fp-ts).**

11,523 stars · 514 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/gcanti/fp-ts
- Homepage: https://gcanti.github.io/fp-ts/
- awesome-repositories: https://awesome-repositories.com/repository/gcanti-fp-ts.md

## Topics

`algebraic-data-types` `functional-programming` `typescript`

## Description

fp-ts is a TypeScript library that brings pure functional programming patterns to the language through algebraic data types, type class abstractions, and composable combinators. It provides foundational data types like Option for optional values, Either for typed error handling, and Task for lazy asynchronous computations, all designed to make invalid states unrepresentable and side effects explicit. The library is built on category theory concepts, offering type classes such as Functor, Applicative, Monad, Semigroup, and Monoid with lawful instances for common data structures.

The library distinguishes itself through its comprehensive set of functional abstractions that enable predictable composition of pure functions and effects. It includes a composable optics system with lenses, prisms, and traversals for immutable nested data manipulation, runtime schema validation for checking data against type definitions, and monad transformer layering for combining multiple computational contexts. fp-ts also simulates higher-kinded types in TypeScript, enabling generic abstractions over type constructors that are not natively supported by the language.

Beyond its core abstractions, fp-ts provides tools for asynchronous effect management with Task composition including parallel execution, sequential chaining, and race conditions. It supports error handling through Either and Validation with multiple error accumulation, stateful computations via the State type, dependency injection through Reader, and output accumulation with Writer. The library also offers property-based testing with seeded pseudorandom data generation, bidirectional route parsing and generation, and type-safe local storage persistence.

The library is distributed as a single npm package with comprehensive API documentation generated from annotated source code, and includes community-curated tutorials and recipes for learning functional programming patterns.

## Tags

### Programming Languages & Runtimes

- [Pure Functional TypeScript Abstractions](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-type-validation/typescript-type-to-code-validators/pure-functional-typescript-abstractions.md) — Applies pure functional patterns with immutable data types and type classes for composable TypeScript code.
- [Contextual Function Lifting](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-value-representations/value-to-task-lifting/contextual-function-lifting.md) — Transforms functions to operate on values wrapped in a context across multiple arguments. ([source](https://gcanti.github.io/fp-ts/modules/Monad.ts))
- [Pure Value Effects](https://awesome-repositories.com/f/programming-languages-runtimes/effect-modeling/pure-value-effects.md) — Wraps a pure value into an effect that succeeds with that value when executed. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Functorial Mapping](https://awesome-repositories.com/f/programming-languages-runtimes/functorial-mapping.md) — Transforms values inside a computational context while preserving the structure of that context. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Higher-Kinded Type Simulation](https://awesome-repositories.com/f/programming-languages-runtimes/generic-types/generic-traits/higher-kinded-type-simulation.md) — Simulates higher-kinded types in TypeScript to enable generic abstractions over type constructors.
- [Lazy Asynchronous Task Management](https://awesome-repositories.com/f/programming-languages-runtimes/lazy-asynchronous-task-management.md) — Models and composes lazy async computations with Task, handling concurrency and sequencing.
- [Lazy Asynchronous Task Modeling](https://awesome-repositories.com/f/programming-languages-runtimes/lazy-asynchronous-task-modeling.md) — Represents delayed or concurrent operations using a lazy, composable Task type. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Monadic Sequential Composition](https://awesome-repositories.com/f/programming-languages-runtimes/monadic-sequential-composition.md) — Chains computations so each step's output feeds into the next for ordered transformations. ([source](https://gcanti.github.io/fp-ts/modules/Monad.ts))
- [Pure Functions](https://awesome-repositories.com/f/programming-languages-runtimes/pure-functions.md) — Combines small pure functions into larger structures using composition utilities. ([source](https://gcanti.github.io/fp-ts/))
- [Asynchronous Array Sequencing](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-array-sequencing.md) — Transforms an array of tasks into a single task yielding an array of results. ([source](https://gcanti.github.io/fp-ts/modules/Task.ts))
- [Task Result Discarders](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-value-representations/value-to-task-lifting/task-value-constant-mapping/task-result-mappers/task-result-discarders.md) — Provides combinators to run two tasks and discard the result of either the first or the second. ([source](https://gcanti.github.io/fp-ts/modules/Task.ts))
- [Contravariant Transformations](https://awesome-repositories.com/f/programming-languages-runtimes/functional-transformations/contravariant-transformations.md) — Adapts input types of functions using the Contravariant type class to reuse logic across different data shapes. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Bifunctor Mappings](https://awesome-repositories.com/f/programming-languages-runtimes/functor-mappings/bifunctor-mappings.md) — Maps over both sides of a data type like Either using the Bifunctor abstraction. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Functorial Value Bindings](https://awesome-repositories.com/f/programming-languages-runtimes/functorial-mapping/functorial-value-bindings.md) — Supports functorial value bindings for adding computed fields to functorial structures. ([source](https://gcanti.github.io/fp-ts/modules/Functor.ts))
- [Monad Transformer Stacks](https://awesome-repositories.com/f/programming-languages-runtimes/monad-transformer-stacks.md) — Combines multiple computational contexts by stacking monad transformers for effect composition.
- [Monadic Do Notation](https://awesome-repositories.com/f/programming-languages-runtimes/monadic-do-notation.md) — Binds intermediate task results to named fields inside do-notation blocks for readable composition. ([source](https://gcanti.github.io/fp-ts/modules/Task.ts))
- [Total Order Definitions](https://awesome-repositories.com/f/programming-languages-runtimes/total-order-definitions.md) — Provides an Ord type class for defining total orderings for custom types. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Newtypes](https://awesome-repositories.com/f/programming-languages-runtimes/type-wrappers/newtypes.md) — Wraps primitive types in distinct types with zero runtime overhead to enforce domain constraints. ([source](https://gcanti.github.io/fp-ts/ecosystem/))

### Part of an Awesome List

- [Data Lenses](https://awesome-repositories.com/f/awesome-lists/devtools/lenses-and-optics/data-lenses.md) — Ships composable lenses, prisms, and traversals for immutable nested data manipulation. ([source](https://gcanti.github.io/fp-ts/ecosystem/))
- [Monads and Functional Tools](https://awesome-repositories.com/f/awesome-lists/devtools/monads-and-functional-tools.md) — Combines stateless functions using Monad and Applicative abstractions for predictable data flows. ([source](https://gcanti.github.io/fp-ts/modules/))

### Data & Databases

- [Effectful Array Traversals](https://awesome-repositories.com/f/data-databases/effectful-array-traversals.md) — Provides Traversable instances for applying effectful functions to array elements. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Computational Context Mappings](https://awesome-repositories.com/f/data-databases/key-value-stores/structured-object-mappings/object-linked-key-value-mappings/map-value-transformers/computational-context-mappings.md) — Transforms values inside computational contexts like Option or Task while preserving structure. ([source](https://gcanti.github.io/fp-ts/modules/Functor.ts))
- [Optional Value Types](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types.md) — Provides an Option type that distinguishes between Some and None values. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Functor Transformations](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/functor-transformations.md) — Applies functions to the contents of an optional container without altering the container structure. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Nullable to Optional Conversions](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/nullable-and-optional-conversions/nullable-to-optional-conversions.md) — Provides a function to convert nullable values into Option, eliminating null checks. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Option to Nullable Conversions](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/nullable-and-optional-conversions/option-to-nullable-conversions.md) — Extracts the inner value from an Option, returning null when absent. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Chaining](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-chaining.md) — Ships monadic chaining for Option that short-circuits on absent values. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Value Transformations](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-value-transformations.md) — Applies a function to the inner value of an Option, preserving the empty state. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Collection Filtering](https://awesome-repositories.com/f/data-databases/collection-filtering.md) — Produces new collections containing only elements that satisfy a specific predicate. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Applicative Value Aggregations](https://awesome-repositories.com/f/data-databases/grouped-value-aggregations/applicative-value-aggregations.md) — Concatenates inner values of applicative functors using a provided Monoid instance. ([source](https://gcanti.github.io/fp-ts/modules/Applicative.ts))
- [Nullable and Optional Conversions](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/nullable-and-optional-conversions.md) — Converts between nullable types and Option, enabling safe null handling. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Fallbacks](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-fallbacks.md) — Returns a fallback value when an Option is None. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Value Combinations](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-value-combinations.md) — Combines two Option values using an associative Semigroup operation. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Value Comparisons](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-value-combinations/optional-value-comparisons.md) — Implements equality and ordering comparisons for optional values. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Value Extractions](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-value-extractions.md) — Provides operations to extract the inner value or a default when absent. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Value Processing](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-value-extractions/optional-value-processing.md) — Reduces an Option to a single value by handling both Some and None cases. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Optional Value Filtering](https://awesome-repositories.com/f/data-databases/null-value-representations/optional-containers/optional-value-types/optional-value-filtering.md) — Filters an Option's inner value by a predicate, returning None on failure. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Computed Field Additions](https://awesome-repositories.com/f/data-databases/structured-data-records/record-transformers/functional-field-modifications/computed-field-additions.md) — Ships computed field additions for incremental record construction within functorial contexts. ([source](https://gcanti.github.io/fp-ts/modules/Functor.ts))

### Development Tools & Productivity

- [Asynchronous Task Composition](https://awesome-repositories.com/f/development-tools-productivity/asynchronous-task-composition.md) — Chains tasks so the output of one feeds into the next, preserving only the final result. ([source](https://gcanti.github.io/fp-ts/modules/Task.ts))

### Scientific & Mathematical Computing

- [Effectful Sequencing](https://awesome-repositories.com/f/scientific-mathematical-computing/array-manipulations/array-splitting/array-reductions/effectful-sequencing.md) — Converts a collection of effectful computations into a single computation returning a collection of results. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Effect Discarding Sequencers](https://awesome-repositories.com/f/scientific-mathematical-computing/array-manipulations/array-splitting/array-reductions/effectful-sequencing/effect-discarding-sequencers.md) — Provides combinators that sequence effects while discarding the second result, enabling ordered pipelines. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Effect Tuple Sequencers](https://awesome-repositories.com/f/scientific-mathematical-computing/array-manipulations/array-splitting/array-reductions/effectful-sequencing/effect-tuple-sequencers.md) — Provides combinators for sequencing effectful computations into a tuple of results. ([source](https://gcanti.github.io/fp-ts/guides/code-conventions))

### Software Engineering & Architecture

- [Algebraic Data Types](https://awesome-repositories.com/f/software-engineering-architecture/abstract-data-types/algebraic-data-types.md) — Encodes domain logic using sum and product types to make invalid states unrepresentable.
- [Traversable & Foldable Abstractions](https://awesome-repositories.com/f/software-engineering-architecture/abstract-data-types/generic-data-abstractions/generic-data-structures/traversable-foldable-abstractions.md) — Provides Traversable and Foldable type classes for effectful iteration over structures. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Type Classes](https://awesome-repositories.com/f/software-engineering-architecture/abstract-data-types/type-classes.md) — Provides category-theory-based type classes like Functor, Applicative, and Monad. ([source](https://gcanti.github.io/fp-ts/))
- [Pure State Transitions](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/state-logic-and-utilities/immutable-state-utilities/pure-state-transitions.md) — Implements a State monad for modeling stateful computations as pure state transitions. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Asynchronous Task Encapsulation](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-task-encapsulation.md) — Wraps async operations in lazy Task values for composable concurrency without callbacks. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Computation Array Traversal](https://awesome-repositories.com/f/software-engineering-architecture/computation-array-traversal.md) — Provides Traversable instances for applying effectful computations to array elements. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Concurrent Effect Combinators](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-effect-combinators.md) — Executes multiple asynchronous effects in parallel and aggregates their results into joint types. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Record](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-effect-combinators/effect-aggregators/record.md) — Combines multiple named effectful computations into a single effect producing a record of results. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Algebraic Data Type Validations](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation/algebraic-data-type-validations.md) — Validates runtime data against algebraic type schemas using Either, Option, and Validation.
- [Effectful Function Compositions](https://awesome-repositories.com/f/software-engineering-architecture/effectful-function-compositions.md) — Composes effectful computations in sequence, passing each output as the next input. ([source](https://gcanti.github.io/fp-ts/modules/Monad.ts))
- [Effect Lifting](https://awesome-repositories.com/f/software-engineering-architecture/effectful-function-compositions/effect-lifting.md) — Transforms functions returning simple wrappers into functions returning complex effect types. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Nested Functor Mapping](https://awesome-repositories.com/f/software-engineering-architecture/effectful-sequence-composition/nested-functor-mapping.md) — Provides nested functor mapping for applying transformations through multiple functor layers. ([source](https://gcanti.github.io/fp-ts/modules/Functor.ts))
- [Error Accumulators](https://awesome-repositories.com/f/software-engineering-architecture/error-accumulators.md) — Combines multiple Either values, collecting all failure messages into a single error using a Semigroup. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Validation Error Aggregators](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/validation-error-aggregators.md) — Accumulates multiple validation failures into a single structured collection instead of short-circuiting. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Effect Type Widening](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/validation-error-aggregators/effect-type-aggregations/effect-type-widening.md) — Provides type-level widening of error and environment types when composing effectful operations. ([source](https://gcanti.github.io/fp-ts/guides/code-conventions))
- [Failure Recovery](https://awesome-repositories.com/f/software-engineering-architecture/failure-handling-policies/success-and-failure-wrapping/failure-recovery.md) — Provides fallback values or computations when an Either holds a failure. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Either Value Extractions](https://awesome-repositories.com/f/software-engineering-architecture/failure-handling-policies/success-to-failure-conversion/either-submersions/either-value-extractions.md) — Wraps computation results as either a success value or a failure with an associated error. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Applicative Effect Handling](https://awesome-repositories.com/f/software-engineering-architecture/functional-application-structuring/applicative-effect-handling.md) — Provides applicative functor instances for combining effectful computations while preserving inner values. ([source](https://gcanti.github.io/fp-ts/modules/Applicative.ts))
- [Functional Optics](https://awesome-repositories.com/f/software-engineering-architecture/functional-optics.md) — Provides composable lenses, prisms, and traversals for immutable nested data manipulation.
- [Lazy Effect Encapsulation](https://awesome-repositories.com/f/software-engineering-architecture/lazy-effect-encapsulation.md) — Wraps synchronous and asynchronous side effects into pure, composable values.
- [Functor Compositions](https://awesome-repositories.com/f/software-engineering-architecture/modular-program-composition/function-composition/categorical-composition/functor-compositions.md) — Provides functor composition utilities for mapping through nested computational contexts. ([source](https://gcanti.github.io/fp-ts/modules/Functor.ts))
- [Monadic Computation Chaining](https://awesome-repositories.com/f/software-engineering-architecture/monadic-computation-chaining.md) — Chains dependent effectful operations where each step passes its result to the next via Monad. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Monadic Flattening](https://awesome-repositories.com/f/software-engineering-architecture/monadic-flattening.md) — Removes nesting from monadic containers like Either of Either using Chain. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Applicative Lifting](https://awesome-repositories.com/f/software-engineering-architecture/monadic-lifting-operations/applicative-lifting.md) — Wraps a plain value into a computational context for use with applicative operations. ([source](https://gcanti.github.io/fp-ts/modules/Applicative.ts))
- [Monoid Operations](https://awesome-repositories.com/f/software-engineering-architecture/monoid-operations.md) — Combines multiple values of the same type using an associative operation and identity element. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Optional Value Types](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types.md) — Models absent values with Option to eliminate null checks and runtime errors. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Option for Nullable Values](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/option-for-nullable-values.md) — Wraps nullable values in an Option type for safe, null-free operations. ([source](https://gcanti.github.io/fp-ts/))
- [Either Error Transformations](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/value-transformations/either-error-transformations.md) — Uses Either to encode fallible computations with explicit typed error handling. ([source](https://gcanti.github.io/fp-ts/))
- [Type Class Polymorphism](https://awesome-repositories.com/f/software-engineering-architecture/polymorphic-type-mapping/type-class-polymorphism.md) — Maps shared behaviors to data types through type class instances obeying mathematical laws.
- [Reader-Based Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/reader-based-dependency-injection.md) — Threads a read-only environment through computations using the Reader type for dependency injection. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Semigroup Operations](https://awesome-repositories.com/f/software-engineering-architecture/semigroup-operations.md) — Ships Semigroup and Monoid abstractions for merging values of the same type. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Sequential Effect Execution](https://awesome-repositories.com/f/software-engineering-architecture/sequential-computation-array-execution/sequential-effect-execution.md) — Executes individual side-effectful computations in a strict linear sequence. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Effectful Result Transformations](https://awesome-repositories.com/f/software-engineering-architecture/side-effect-handlers/result-track-side-effects/effectful-result-transformations.md) — Applies pure functions to the result of effectful computations, producing new transformed effects. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))
- [Side Effect Modeling](https://awesome-repositories.com/f/software-engineering-architecture/side-effect-handlers/synchronous-effect-wrapping/side-effect-modeling.md) — Wraps synchronous and asynchronous side effects into pure values for deferred composition. ([source](https://cdn.jsdelivr.net/gh/gcanti/fp-ts@master/README.md))
- [Stateful Computation Modeling](https://awesome-repositories.com/f/software-engineering-architecture/stateful-computation-modeling.md) — Provides a State type for threading state through pure functional computations. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Error Handling](https://awesome-repositories.com/f/software-engineering-architecture/type-safe-data-handling/error-handling.md) — Represents fallible computations with typed errors using the Either data type. ([source](https://gcanti.github.io/fp-ts))
- [Algebraic Type Class Instances](https://awesome-repositories.com/f/software-engineering-architecture/algebraic-type-class-instances.md) — Allows defining custom type class instances for user-defined data types. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Constant Functor Application](https://awesome-repositories.com/f/software-engineering-architecture/applicative-functors/constant-functor-application.md) — Implements constant functor application for pointful-style mapping operations. ([source](https://gcanti.github.io/fp-ts/modules/Functor.ts))
- [Custom Equality Definitions](https://awesome-repositories.com/f/software-engineering-architecture/custom-equality-definitions.md) — Provides an Eq type class for defining type-safe custom equality comparisons. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Runtime Schema Validations](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/runtime-schema-validations.md) — Checks data structures against type schemas at runtime to ensure structural integrity.
- [Kleisli Arrow Transformations](https://awesome-repositories.com/f/software-engineering-architecture/effectful-function-compositions/effect-lifting/kleisli-chaining/kleisli-arrow-transformations.md) — Ships utilities for lifting Kleisli arrows between different monadic contexts. ([source](https://gcanti.github.io/fp-ts/guides/code-conventions))
- [Equality and Ordering Interfaces](https://awesome-repositories.com/f/software-engineering-architecture/equality-and-ordering-interfaces.md) — Provides Eq and Ord type classes for generic equality and ordering across data types. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Exception to Option Adapters](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/exception-logic-structures/exception-hierarchies/exception-type-enforcers/exception-to-result-adapters/exception-to-option-adapters.md) — Converts exception-throwing thunks into optional values returning None on exception. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Either Folding](https://awesome-repositories.com/f/software-engineering-architecture/failure-handling-policies/success-to-failure-conversion/either-submersions/either-branch-swapping/either-folding.md) — Provides Either folding to reduce both success and failure branches into a single result. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Either Success Chaining](https://awesome-repositories.com/f/software-engineering-architecture/failure-handling-policies/success-to-failure-conversion/either-submersions/either-value-extractions/either-success-chaining.md) — Chains functions on the success value of an Either, producing a new Either without unwrapping. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Either Success Transformations](https://awesome-repositories.com/f/software-engineering-architecture/failure-handling-policies/success-to-failure-conversion/either-submersions/either-value-extractions/either-success-transformations.md) — Maps functions over the success value of an Either while preserving the failure channel. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Functor Named Bindings](https://awesome-repositories.com/f/software-engineering-architecture/functor-named-bindings.md) — Provides functor named bindings to attach names to values inside functorial structures. ([source](https://gcanti.github.io/fp-ts/modules/Functor.ts))
- [Monoid Context Lifting](https://awesome-repositories.com/f/software-engineering-architecture/monadic-lifting-operations/monoid-context-lifting.md) — Lifts monoidal concatenation into an applicative context for wrapped value combination. ([source](https://gcanti.github.io/fp-ts/modules/Applicative.ts))
- [Exception to Absent Value Conversions](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/absent-value-side-effect-handlers/exception-to-absent-value-conversions.md) — Wraps exception-throwing computations into optional values that return absent on failure. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Either Default Extractions](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/default-value-insertions/either-default-extractions.md) — Provides Either default extraction to unwrap success values or return a fallback on failure. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Either to Option Conversions](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/either-to-option-conversions.md) — Discards the error side of an Either, returning None for Left and Some for Right. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Natural Transformation Conversions](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/natural-transformation-conversions.md) — Transforms one effect type into another using natural transformations for interoperation. ([source](https://gcanti.github.io/fp-ts/modules/))
- [Option and Either Interconversions](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/option-and-either-interconversions.md) — Provides bidirectional conversion between Option and Either types. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Nullable to Either Conversions](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/option-for-nullable-values/nullable-to-either-conversions.md) — Converts nullable values into an Either, with a default error for null or undefined. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Option to Either Conversions](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/option-to-either-conversions.md) — Converts an Option into an Either, providing a default error value when absent. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Either Predicate Checks](https://awesome-repositories.com/f/software-engineering-architecture/optional-value-types/option-to-either-conversions/predicate-to-either-conversions/outcome-predicate-checks/either-predicate-checks.md) — Checks the success value of an Either against a predicate, returning a Left on failure. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Parallel Task Execution](https://awesome-repositories.com/f/software-engineering-architecture/parallel-task-execution.md) — Provides combinators for executing multiple tasks concurrently and combining their results. ([source](https://gcanti.github.io/fp-ts/modules/Task.ts))
- [Optional Equality Testing](https://awesome-repositories.com/f/software-engineering-architecture/referential-equality-checking/optional-equality-testing.md) — Checks structural equality of Option values using an Eq instance. ([source](https://gcanti.github.io/fp-ts/modules/Option.ts))
- [Sequential Task Execution](https://awesome-repositories.com/f/software-engineering-architecture/sequential-task-execution.md) — Executes multiple tasks one after another using a sequential applicative instance. ([source](https://gcanti.github.io/fp-ts/modules/Task.ts))
- [Exception to Either Executions](https://awesome-repositories.com/f/software-engineering-architecture/service-layers/fallible-layer-initialization/fallible-task-execution/exception-to-either-executions.md) — Runs fallible functions and returns results as Either values with caught errors. ([source](https://gcanti.github.io/fp-ts/modules/Either.ts))
- [Side Effect Discarding](https://awesome-repositories.com/f/software-engineering-architecture/side-effect-handlers/side-effect-execution-encapsulation/side-effect-discarding.md) — Executes an effect for its side effects while discarding the result to maintain the original value pipeline. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))

### User Interface & Experience

- [Effect Flattening](https://awesome-repositories.com/f/user-interface-experience/2d-panning-controllers/image-pan-and-zoom-controls/server-side-zoom-operations/nested-either-zooming/effect-flattening.md) — Flattens nested monadic structures like Task of Task into a single effect. ([source](https://gcanti.github.io/fp-ts/modules/IO.ts))

### Security & Cryptography

- [Runtime Data Validation](https://awesome-repositories.com/f/security-cryptography/input-validation-schemas/runtime-data-validation.md) — Provides runtime schema validation for checking data structures against type definitions.

### Testing & Quality Assurance

- [Seeded Pseudorandom Generation](https://awesome-repositories.com/f/testing-quality-assurance/automated-test-data-generation/seeded-pseudorandom-generation.md) — Generates structured, seeded pseudorandom test data from type definitions for property-based testing.
