Arrow is a functional programming library for Kotlin that provides tools for implementing data-oriented programming patterns. It serves as a framework for typed error handling, a concurrency toolkit, and a library for the manipulation of immutable data.
The project distinguishes itself through specialized capabilities for managing application failures using explicit types instead of exceptions and implementing resilience patterns such as circuit breakers and retry policies for distributed services. It also provides optics to update and query deeply nested immutable data structures without manual copy operations.
The library covers a broad surface of functional capabilities, including structured concurrency orchestration, software transactional memory for shared state, and resource lifecycle management. It further provides utilities for function composition, error accumulation for validation, and stack-safe recursion.