Maven Central Latest snapshot Kotlin version License StackOverflow Twitter

Λrrow is a library for Typed Functional Programming in Kotlin.

Arrow is composed of 4 main modular libraries

Core

Arrow Core includes types such as Either, Validated and many extensions to Iterable that can be used when implementing error handling patterns. Core also includes the base continuation effects system, which includes patterns to remove callbacks and enables controlled effects in direct syntax. Some applications of the effect system reduce boilerplate and enable direct syntax including monad comprehensions and computation expressions.

Read more

Core

Fx

Arrow Fx is a full-featured, high-performance, asynchronous framework that brings functional operators to Kotlin’s suspend functions. By leveraging the power of KotlinX Coroutines and the compiler support for CPS transformations, Arrow Fx results in optimal async programs with increased throughput and decreased allocations.

Read more

Fx

Optics

Arrow Optics provides an automatic DSL that allows users to use . notation when accessing, composing, and transforming deeply nested immutable data structures. Optics also offers all the base types such as Lens, Prism, and others from which we can generalize accessing and traversing deep values in sealed and data classes models.

Read more

Optics

Meta

Arrow Meta is a general purpose library for meta-programming in Kotlin to build compiler plugins. Some type system features proposed by Arrow such as union types, product types, proof derivation, and others are built with Arrow Meta and serve as examples of what could be incorporated in the Kotlin compiler.

Read more

Meta

Setup

Configure Arrow for your project

Jdk

Make sure to have the latest version of JDK 1.8 installed.

Android

Arrow supports Android starting on API 21 and up.

Basic Setup

In your project’s root build.gradle.kts, append this repository to your list:

allprojects {
    repositories {
        mavenCentral()
    }
}

Add the dependencies into the project’s build.gradle.kts:

Arrow Core
dependencies {
    implementation("io.arrow-kt:arrow-core:1.0.1")
}
Arrow Core + Arrow Optics
apply plugin: 'com.google.devtools.ksp'

dependencies {
    implementation("io.arrow-kt:arrow-optics:1.0.1")
    ksp("io.arrow-kt:arrow-optics-ksp-plugin:$arrowVersion")
}

here is an example repository https://github.com/arrow-kt/Arrow-JVM-Template/tree/optics-setup.

Arrow Core + Arrow Fx
dependencies {
    implementation("io.arrow-kt:arrow-fx-coroutines:1.0.1")
}

BOM file

To avoid specifying the Arrow version for every dependency, a BOM file is available:

dependencies {
    implementation(platform("io.arrow-kt:arrow-stack:1.0.1"))

    implementation("io.arrow-kt:arrow-core")
    implementation("io.arrow-kt:arrow-fx-coroutines")
    ...
}

Next development version

If you want to try the latest features, replace 1.0.1 with the latest alpha release.

Basic Setup

In your project’s root build.gradle, append this repository to your list:

allprojects {
    repositories {
        mavenCentral()
    }
}

Add the dependencies into the project’s build.gradle:

Arrow Core
def arrow_version = "1.0.1"
dependencies {
    implementation "io.arrow-kt:arrow-core:$arrow_version"
}
Arrow Core + Arrow Optics
apply plugin: 'com.google.devtools.ksp'

dependencies {
    implementation "io.arrow-kt:arrow-optics:1.0.1"
    ksp "io.arrow-kt:arrow-optics-ksp-plugin:$arrowVersion"
}

here is an example repository https://github.com/arrow-kt/Arrow-JVM-Template/tree/optics-setup.

Arrow Core + Arrow Fx
def arrow_version = "1.0.1"
dependencies {
    implementation "io.arrow-kt:arrow-fx-coroutines:$arrow_version"
}

BOM file

To avoid specifying the Arrow version for every dependency, a BOM file is available:

def arrow_version = "1.0.1"
dependencies {
    implementation platform("io.arrow-kt:arrow-stack:$arrow_version")

    implementation "io.arrow-kt:arrow-core"
    implementation "io.arrow-kt:arrow-fx-coroutines"
    ...
}

Next development version

If you want to try the latest features, replace 1.0.1 with the latest alpha release.

Basic Setup

Make sure to have at least the latest version of JDK 1.8 installed. Add to your pom.xml file the following properties:


<properties>
    <kotlin.version>1.6.10</kotlin.version>
    <arrow.version>1.0.1</arrow.version>
</properties>

Add the dependencies that you want to use:


<dependency>
    <groupId>io.arrow-kt</groupId>
    <artifactId>arrow-core</artifactId>
    <version>${arrow.version}</version>
</dependency>

BOM file

To avoid specifying the Arrow version for every dependency, a BOM file is available:


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.arrow-kt</groupId>
            <artifactId>arrow-stack</artifactId>
            <version>${arrow.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
...
</dependencies>

Next development version

If you want to try the latest features, replace 1.0.1 with the latest alpha release.

Do you like Arrow?

Arrow Org
<