funKTionale
===========
Functional constructs and patterns for [Kotlin](http://kotlin-lang.org)
*NOTE: Development of this project is frozen*, as it will eventually be made obsolete by
[Arrow](https://arrow-kt.io/), which merges the functionality of funKTionale and [Kategory](https://github.com/47deg/kategory-intro). If you are not yet using funKTionale, we recommend you [start with Arrow](https://arrow-kt.io/docs/) 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](https://github.com/MarioAriasC/funKTionale/wiki)
## Conference and talks
Functional Programming in Kotlin with funKTionale ([video](https://www.youtube.com/watch?v=klakgWp1KWg), [presentation](https://speakerdeck.com/marioariasc/functional-programming-in-kotlin-with-funktionale-2))
## Maven (and Gradle)
You must configure your `pom.xml` file using JCenter repository
```xml
central
bintray
http://jcenter.bintray.com
```
Then you can use any funKTionale module to your library
```xml
org.funktionale
funktionale-all
1.2
```
## How to contribute?
Rise your PR against Experimental module (`funktionale-experimental`). Once it gets approved I'll move it to a proper module