{"repo":"IBM/fp-go","free":true,"listed":false,"github":"https://github.com/IBM/fp-go","clone":"git clone https://github.com/IBM/fp-go.git","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","language":"Go","stars":2017,"topics":["functional-programming","go","golang","library","monad","utility"],"license":"Apache-2.0","category":"dev-tools","readme_excerpt":"fp-go: Functional Programming Library for Go 🚧 Work in progress! 🚧 Despite major version 1 (due to semantic-release limitations), we're working to minimize breaking changes. A comprehensive functional programming library for Go, strongly influenced by the excellent fp-ts library for TypeScript. 📚 Table of Contents - Getting Started - Design Goals - Core Concepts - Comparison to Idiomatic Go - Implementation Notes - Common Operations - Resources 🚀 Getting Started Installation Quick Example Resources - 📖 API Documentation - 💡 Code Samples - 🆕 V2 Documentation (requires Go 1.24+) 🎯 Design Goals This library aims to provide a set of data types and functions that make it easy and fun to write maintainable and testable code in Go. It encourages the following patterns: Core Principles - Pure Functions : Write many small, testable, and pure functions that produce output only depending on their input and execute no side effects - Side Effect Isolation : Isolate side effects into lazily executed functions using the IO monad - Consistent Composition : Expose a consistent set of composition functions across all data types - Each data type has a small set of composition functions - Functions are named consistently across all data types - Semantics of same-named functions are consistent across data types 🧘🏽 Alignment with the Zen of Go This library respects and aligns with The Zen of Go: Principle Alignment Explanation ----------- ----------- ------------- 🧘🏽 Each package fulfi","default_branch":null,"files":null,"tree":[],"storefront":"/r/IBM","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/IBM/fp-go/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}