Home

Awesome

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

ModuleDescriptionInternal DependenciesSize(KB)
funktionale-allGOTY edition. Every other module content is included but not Experimental moduleN/A1372
funktionale-collectionsCollections related extensions such as tail, prependTo and othersN/A4
funktionale-complementExtension functions for predicates to generate complement functionsN/A36
funktionale-compositionExtensions andThen (forwardCompose) and compose for functionsN/A8
funktionale-curryingExtension curried and uncurried for functionsN/A348
funktionale-eitherEither and Disjuntion (right-biased Either) typesfunktionale-option44
funktionale-experimentalPlayground and examples. Not to be used on productionfunktionale-all116
funktionale-memoizationMemoization for functionsN/A108
funktionale-optionOption typefunktionale-collections and funktionale-utils20
funktionale-pairingTransformations for functions with arity 2 or 3 to one parameter of type Pair or Triple respectivelyN/A8
funktionale-partialsPartial applied functionsN/A688
funktionale-pipepipe operatorN/A36
funktionale-reverseExtension reverse for functionsN/A32
funktionale-statestate monadN/A20
funktionale-tryTry computation typefunktionale-either16
funktionale-utilsidentity and constant functions and Partial FunctionsN/A20
funktionale-validationValidation types and functions with Disjunctionsfunktionale-either12

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