Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pakoito/FunctionalRx2

FunctionalRx2 is a collection of constructs to simplify a functional programming approach to Java and Android [STABLE]
https://github.com/pakoito/FunctionalRx2

functional-programming java rxjava2

Last synced: about 2 months ago
JSON representation

FunctionalRx2 is a collection of constructs to simplify a functional programming approach to Java and Android [STABLE]

Awesome Lists containing this project

README

        

# FunctionalRx2

FunctionalRx2 is a collection of constructs to simplify a functional programming approach to development on Java and Android.

[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-FunctionalRx2-blue.svg?style=flat-square)](https://android-arsenal.com/details/1/5147)

For the RxJava 1.X version please go to [FunctionalRx](https://github.com/pakoito/FunctionalRx).

# Rationale

The base Java 7 framework does not contain most constructs to do even the simplest functional development. Given that functional programming is a paradigm that's not limited by languages, a series of libraries have been created to bridge some of the gap to others like Kotlin, Scala or Clojure.

FunctionalRx uses RxJava as a backend for their functions and helpers. It's meant to be used in combination with their rective streams.

# Usage

An overview of the libraries can be read at [Building a Functional Toolset on Android](http://www.pacoworks.com/2016/05/25/building-a-functional-toolset-for-android/) on my blog. If you want to see them in action, watch my presentation on [Fully Reactive Apps](http://www.pacoworks.com/2016/11/02/fully-reactive-apps-at-droidcon-uk-2016-2/) or visit the [FunctionalAndroidReference](https://github.com/pakoito/FunctionalAndroidReference) sample project.

A thorough description and examples of each construct can be found in the readme of their repositories:

[RxTuples2](https://github.com/pakoito/RxTuples2) - Simple tuples to use with RxJava

[RxSealedUnions2](https://github.com/pakoito/RxSealedUnions2) - Tagged Unions for the RxJava aesthete

[RxComprehensions](https://github.com/pakoito/RxComprehensions) - Reduce boilerplate in RxJava by abstracting chained flatMaps, concatMaps and switchMaps

[RxPartialApplication2](https://github.com/pakoito/RxPartialApplication2) - Simple partial application for FunctionN and ConsumerN on RxJava

[RxCurrying2](https://github.com/pakoito/RxCurrying2) - Simple currying for FuncN and ActionN on RxJava

[RxConsumers](https://github.com/pakoito/RxConsumers) - Simple ConsumerN composition to use with RxJava

[RxFunctions2](https://github.com/pakoito/RxFunctions2) - Advanced Function composition to use with RxJava

[RxMemoization2](https://github.com/pakoito/RxMemoization2) - Simple Function result caching for RxJava

## Distribution

Each library can be added individually, or as a group by adding FunctionalRx2.

Add as a dependency to your `build.gradle`
```groovy
repositories {
...
maven { url "https://jitpack.io" }
...
}

dependencies {
...
compile 'com.github.pakoito:FunctionalRx2:1.1.0'

// This version includes:
// compile 'com.github.pakoito:RxTuples2:1.0.0'
// compile 'com.github.pakoito:RxSealedUnions2:1.0.0'
// compile 'com.github.pakoito.RxComprehensions:rxcomprehensions2:1.3.0'
// compile 'com.github.pakoito:RxMemoization2:1.0.0'
// compile 'com.github.pakoito:RxPartialApplication2:1.0.0'
// compile 'com.github.pakoito:RxCurrying2:1.0.0'
// compile 'com.github.pakoito:RxFunctions2:1.0.0'
// compile 'com.github.pakoito:RxConsumers:1.0.0'
...
}
```
or to your `pom.xml`

```xml


jitpack.io
https://jitpack.io

com.github.pakoito
FunctionalRx2
1.1.0

```

## License

Copyright (c) pakoito 2017

The Apache Software License, Version 2.0

See LICENSE.md