Λrrow - Functional Programming for Kotlin

We are pleased to announce the general availability of Λrrow !

Λrrow is a functional programming library for the Kotlin programming language born from the fusion of KΛTEGORY and funKTionale.

Kategory and Funktionale were the two most relevant FP libraries for Kotlin in 2017.

The two groups of maintainers decided to join forces after encountering both users and companies in the Scala community who were facing issues with scalaz and cats while working on industry projects. The goal was to merge into a single library that would provide users in Kotlin with a unified and reasonable approach to typed FP that avoids issues related to split libraries and binary incompatibilities between data types and type classes for users.

Now the KΛTEGORY and funKTionale libraries have united forces and made the necessary changes required to bring these two communities together in the spirit of a better FP ecosystem for everyone in Kotlin.

Arrow is built from the ground up as a modular library that allows users to pick and choose what features interest them the most.

At the time of the current release 0.5.5 the following modules are available:

Arrow Core

compile 'io.arrow-kt:arrow-core:0.5.5'

Basic data types such as Option , Either , and others are part of the foundation that Arrow is built on.

Arrow Data

compile 'io.arrow-kt:arrow-data:0.5.5'

Advanced data types such as Kleisli , EitherT , etc.

Arrow Type classes

compile 'io.arrow-kt:arrow-typeclasses:0.5.5'

FP type classes Functor , Applicative , Monad , etc.

Arrow Instances

compile 'io.arrow-kt:arrow-instances:0.5.5'

Implicit instances for all the Arrow data types providing instances of the FP type classes

Arrow Free

compile 'io.arrow-kt:arrow-free:0.5.5'

Free data structures, Free and FreeApplicative , Cofree , etc.

Arrow MTL

compile 'io.arrow-kt:arrow-mtl:0.5.5'

MTL type classes that allow for the abstraction of monad transformers. FunctorFilter , MonadReader , etc.

Arrow Effects

compile 'io.arrow-kt:arrow-effects:0.5.5'

Arrow’s IO data type and related type classes abstract away effect handling and async behaviors.

Arrow Effects RX2

compile 'io.arrow-kt:arrow-effects-rx2:0.5.5'

Instances and utilities to work with RX in a more functional style.

Arrow Optics

compile 'io.arrow-kt:arrow-optics:0.5.5'

Lenses, Prisms, Iso, and more data types and type classes to work with immutable data structures such as data classes or sealed families.

Arrow Syntax

compile 'io.arrow-kt:arrow-syntax:0.5.5'

Syntax facilities derived from data types and type class evidences over the std lib data types.

We’d like to invite you to try out ‘Λrrow’ and listen to the announcement on Talking Kotlin here:

Arrow is proudly sponsored by 47 Degrees, a Functional Programming consultancy with a focus on the Scala and Kotlin Programming languages which supports the active development of Arrow.

Interested in discussing Arrow? Head over to the Arrow Gitter channel or join the #arrow channel on the official Kotlin Slack.