funKTionale
Functional constructs and patterns for Kotlin
NOTE: Development of this project is frozen, as it will eventually be made obsolete by Arrow, which merges the functionality of funKTionale and Kategory. If you are not yet using funKTionale, we recommend you start with Arrow instead.
Modules
Module | Description | Internal Dependencies | Size(KB) |
---|---|---|---|
funktionale-all |
GOTY edition. Every other module content is included but not Experimental module | N/A | 1372 |
funktionale-collections |
Collections related extensions such as tail , prependTo and others |
N/A | 4 |
funktionale-complement |
Extension functions for predicates to generate complement functions | N/A | 36 |
funktionale-composition |
Extensions andThen (forwardCompose ) and compose for functions |
N/A | 8 |
funktionale-currying |
Extension curried and uncurried for functions |
N/A | 348 |
funktionale-either |
Either and Disjuntion (right-biased Either) types | funktionale-option |
44 |
funktionale-experimental |
Playground and examples. Not to be used on production | funktionale-all |
116 |
funktionale-memoization |
Memoization for functions | N/A | 108 |
funktionale-option |
Option type | funktionale-collections and funktionale-utils |
20 |
funktionale-pairing |
Transformations for functions with arity 2 or 3 to one parameter of type Pair or Triple respectively |
N/A | 8 |
funktionale-partials |
Partial applied functions | N/A | 688 |
funktionale-pipe |
pipe operator |
N/A | 36 |
funktionale-reverse |
Extension reverse for functions |
N/A | 32 |
funktionale-state |
state monad |
N/A | 20 |
funktionale-try |
Try computation type | funktionale-either |
16 |
funktionale-utils |
identity and constant functions and Partial Functions |
N/A | 20 |
funktionale-validation |
Validation types and functions with Disjunctions | funktionale-either |
12 |
Documentation
Read the Wiki
Conference and talks
Functional Programming in Kotlin with funKTionale (video, presentation)
Maven (and Gradle)
You must configure your pom.xml
file using JCenter repository
<repository>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
Then you can use any funKTionale module to your library
<dependency>
<groupId>org.funktionale</groupId>
<artifactId>funktionale-all</artifactId>
<version>1.2</version>
</dependency>
How to contribute?
Rise your PR against Experimental module (funktionale-experimental
). Once it gets approved I'll move it to a proper module