Monix is a high-performance Scala/Scala.js library for asynchronous, effectful, and reactive programming, consumed as a dependency rather than run as an application. It provides four core data types: Task (an asynchronous, cancelable effect with a trampolined run loop), Coeval (synchronous lazy evaluation), Observable (a push-based, back-pressure-respecting stream with a very large operator suite), and Iterant (a pull-based functional stream with primitive-specialized batch cursors). Alongside these it ships monix-execution (Scheduler hierarchies with trampolining/batching, a rich Cancelable family, cache-line-padded lock-free atomics, concurrent queues) and monix-catnap (MVar, Semaphore, CircuitBreaker, ConcurrentChannel, ConcurrentQueue, FutureLift). There is no standalone entry point; integration is via sbt libraryDependencies, and the build is a multi-module sbt project cross-compiled for JVM and Scala.js with shared sources plus platform-specific jvm/js implementations.
Scalaz is a mature, purely functional programming library for Scala, providing a comprehensive set of type classes (Functor, Monad, Traverse, Foldable, etc.), monad transformers (OptionT, StateT, WriterT, etc.), effect types (IO, ST, RegionT), efficient immutable data structures (IList, Tree, FingerTree, Heap, Dequeue, etc.), and syntactic enrichment for all of the above. It is organized into modular sub-projects (core, effect, iteratee, scalacheck-binding) and supports cross-compilation to JVM, JavaScript, and Native platforms across Scala 2.13 and 3. The library is designed for production use and serves as both a practical toolkit and a reference implementation of category theory concepts in Scala. While primarily a library, it contains advanced research-level abstractions (free monads, cofree comonads, finger trees) that make it a valuable resource for functional programming education.
IBM fp-go is a comprehensive functional programming library for Go, heavily inspired by fp-ts (TypeScript). It provides a wide range of algebraic abstractions including Option, Either, Result, IO, Reader, State, Writer, and their monad transformer stacks (IOEither, ReaderIOEither, ReaderIOResult, StateReaderIOEither, etc.). The library employs Go generics to simulate higher-kinded types and includes optics (lenses, prisms, isomorphisms, traversals), lazy iterators, retry policies, resource management via Bracket, dependency injection with Reader, and code generation tools. It also offers idiomatic Go wrappers that return (A, error) tuples while preserving functional composition. The codebase is split into two parallel module paths (root and v2/), with v2 representing a newer generation requiring Go 1.24+ and adding result types, effect packages, and context-aware variants. While highly engineered and feature-rich, the dual tree structure, some incomplete components, and non-standard pragmas introduce maintenance complexity.