Image credit www.47deg.com
Λ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.
Image credit www.47deg.com
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'
Arrow MTL
compile 'io.arrow-kt:arrow-mtl:0.5.5'
Arrow Effects
compile 'io.arrow-kt:arrow-effects:0.5.5'
Arrow Effects RX2
compile 'io.arrow-kt:arrow-effects-rx2:0.5.5'
Arrow Optics
compile 'io.arrow-kt:arrow-optics:0.5.5'
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.