{"adoption": {"forks": 510, "observed_at": "2026-08-28T04:10:48.545015+00:00", "stars": 11540}, "canonical_url": "https://ross.abutalabs.com/products/fp-ts", "card": {"archived": false, "artifact_type": "library", "description": "Functional programming in TypeScript", "domain": ["developer-tools", "programming-languages", "web-development", "frontend", "backend"], "enriched": true, "function": ["serialization", "error-handling", "developer-tools"], "health_score": 77, "homepage": "https://gcanti.github.io/fp-ts/", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["gcanti/fp-ts"], "name": "gcanti/fp-ts", "platform": ["cross-platform", "browser"], "pushed_at": "2026-04-20T19:55:05+00:00", "repo": "gcanti/fp-ts", "stars": 11540, "tags": ["functional-programming", "typescript", "algebraic-data-types", "type-classes", "monads", "option", "either", "higher-kinded-types", "pure-functions", "category-theory", "nodejs", "web-server"], "topics": ["typescript", "functional-programming", "algebraic-data-types"], "urls": [], "use_cases": ["write pure functional code in TypeScript", "handle errors and null values with Option and Either instead of exceptions", "compose async operations with Task and IO monads", "use functional type classes like Functor, Applicative, and Monad in TypeScript", "model domain logic with algebraic data types", "learn functional programming patterns from Haskell and Scala in a TypeScript setting"], "what_it_is": "fp-ts is a library for typed functional programming in TypeScript, providing popular data types (Option, Either, IO, Task), type classes (Functor, Applicative, Monad), and abstractions inspired by Haskell, PureScript, and Scala. It implements Higher Kinded Types, which TypeScript does not support natively, enabling pure functional programming with composable higher-order abstractions.", "when_to_avoid": ["you are starting a new project - Effect-TS is the official successor and offers more features", "your team does not already know functional programming - the docs assume FP knowledge", "you need stack-safe recursion everywhere - data types are not stack safe and there is no trampolining", "you want a batteries-included framework rather than a library of abstractions"], "when_to_choose": ["you want typed functional programming abstractions in an existing TypeScript codebase", "you prefer explicit error handling with Option/Either over exceptions and nulls", "you need composable, law-abiding abstractions rooted in category theory", "you are already familiar with FP concepts from Haskell, PureScript, or Scala"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fp-ts", "repo": "gcanti/fp-ts", "role": "main", "score": 58}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.545015+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:15:31.531770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e355acb39f75334676735de36d04dc7f8bcc829df9f4cce6759881a15922465", "fetched_at": "2026-08-28T04:10:48.545015+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/fp-ts"}, {"content_hash": "c514f08b514296c61f7d9d751db90283b43411c2ec8ae64ecc67326fb689b6d6", "fetched_at": "2026-08-29T08:14:20.727867+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/fp-ts/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 78, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3507, "days_push": 135, "days_rel": 631, "gap_med": null, "n_releases_24m": 1}, "score": 58, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}