For the past 9 months a growing group of contributors have been working on bringing a complete Typed Functional Programming experience to Kotlin by creating a new modular library that will complement the standard library with functional extensions, datatypes and abstractions.
The project is called ΛRROW, and is the result of merging the two largest functional libraries in the community: funKtionale and KΛTEGORY. It has its own organisation, an extensive documentation and tutorials website and a Gitter chat for live support.
The result is a project that includes everything you need to write code in a typed functional style. Some of the currently available features are:
- Comprehensive docs, examples, and tutorials - docs examples book more
- High modularity - link
- Extension functions for function composition, partial application, currying, collection helpers, and many other operations - link
- Support of typeclasses with basic derivation - link
- Common datatypes like Either, Option, Try, NonEmptyList and Validated - link
- Wrapper datatypes for the standard library, and popular libraries like RxJava2 and kotlinx.coroutines - link
- Support for async/await coroutine style over all datatypes! - link
- Typeclass abstractions across many datatypes for asynchronous execution, both sequential and in parallel - link
- Code generation for data and sealed classes that are immutable, to avoid boilerplate when updating deeply nested fields - link
You can also watch the LambdaWorld presentation where we take a quick dive on each one of them.
The contributors have been hard at work over Q4 last year introducing and presenting all about these features and how you can use them in your existing projects. The Presentations & Blogs section of the docs website has a good selection of them. I'd like to personally thank all of them for their effort and time, the project wouldn't have been possible without them 🎉
Now that the project has general availability and is being adopted by more and more users, our roadmap is focused on providing world-class tutorials and guides to learn the typed functional coding style, all while extending our support for common abstractions and new language features. Feel free to watch the repo to be kept up to date!