{"adoption": {"forks": 82, "observed_at": "2026-08-28T04:06:06.283277+00:00", "stars": 2020}, "canonical_url": "https://ross.abutalabs.com/products/fp-go", "card": {"archived": false, "artifact_type": "library", "description": "Functional programming library for Go 1.24+, inspired by fp-ts. Uses generic type aliases for a clean, composable API. Provides Option, Either, Result, IO, IOResult, Reader, and ReaderIOResult monads, plus optics (Lens, Prism, Traversal) for immutable data manipulation. Supports Functor, Applicative, and Monad abstractions with do-notation-style", "domain": ["programming-languages", "developer-tools"], "enriched": true, "function": ["error-handling", "concurrency", "developer-tools"], "health_score": 99, "homepage": "https://github.com/IBM/fp-go/tree/main/v2", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["IBM/fp-go"], "name": "IBM/fp-go", "platform": ["go", "cross-platform"], "pushed_at": "2026-08-20T00:38:26+00:00", "repo": "IBM/fp-go", "stars": 2020, "tags": ["functional-programming", "monads", "optics", "fp-ts", "generics", "immutability", "do-notation", "algorithms"], "topics": ["functional-programming", "go", "golang", "library", "monad", "utility"], "urls": [], "use_cases": ["handle errors functionally in Go with Either and Result types", "isolate side effects using IO monads in Go code", "compose pure functions with pipe and monadic operations", "manipulate immutable data structures with lenses and prisms", "write testable Go code with functional patterns", "use Functor, Applicative, and Monad abstractions in Go"], "what_it_is": "IBM/fp-go is a functional programming library for Go 1.24+ inspired by fp-ts, providing monads like Option, Either, Result, IO, and Reader, plus optics such as Lens, Prism, and Traversal. It leverages generic type aliases to offer a clean, composable API for pure functions and side-effect isolation.", "when_to_avoid": ["your team prefers idiomatic imperative Go without functional abstractions", "you need a stable, non-breaking API - the library is marked work-in-progress with possible breaking changes", "your codebase targets Go versions earlier than 1.24"], "when_to_choose": ["you want fp-ts-style functional programming idioms in Go", "your project uses Go 1.24+ and benefits from generics-based abstractions", "you need explicit error handling and side-effect isolation for maintainable, testable code"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fp-go", "repo": "IBM/fp-go", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "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:06:06.283277+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.283277+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:00:13.208909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "09d0839d99fb6a42a97cd5736c477b90a8b82d3fa69c7dfa193a5b8132fc5a2e", "fetched_at": "2026-08-28T04:06:06.283277+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IBM/fp-go"}, {"content_hash": "9e90026a4fb204934293919d4799601f1099727efbd304e50277f563e393a479", "fetched_at": "2026-08-29T10:40:09.229522+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/IBM/fp-go/tree/main/v2"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 82, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1155, "days_push": 14, "days_rel": 17, "gap_med": 0.0, "n_releases_24m": 321}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}