All Projects → pakoito → Rxtuples

pakoito / Rxtuples

Licence: other
Simple tuples to use with RxJava [STABLE]

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Rxtuples

Parapet
A purely functional library to build distributed and event-driven systems
Stars: ✭ 106 (-6.19%)
Mutual labels:  functional-programming
Python Memoization
A powerful caching library for Python, with TTL support and multiple algorithm options.
Stars: ✭ 109 (-3.54%)
Mutual labels:  functional-programming
Lift
constexpr C++17 library for simplifying higher order functions in application code
Stars: ✭ 111 (-1.77%)
Mutual labels:  functional-programming
Forge
Functional style JSON parsing in Kotlin
Stars: ✭ 106 (-6.19%)
Mutual labels:  functional-programming
Clear Config
Scala FP configuration library with a focus on runtime clarity
Stars: ✭ 108 (-4.42%)
Mutual labels:  functional-programming
React Collection Helpers
A suite of composable utility components to manipulate collections.
Stars: ✭ 109 (-3.54%)
Mutual labels:  functional-programming
Sodium Typescript
Typescript/Javascript implementation of Sodium FRP (Functional Reactive Programming) library
Stars: ✭ 102 (-9.73%)
Mutual labels:  functional-programming
Wonder Editor
Functional 3D Webgl Editor
Stars: ✭ 113 (+0%)
Mutual labels:  functional-programming
Fsconfig
FsConfig is a F# library for reading configuration data from environment variables and AppSettings with type safety.
Stars: ✭ 108 (-4.42%)
Mutual labels:  functional-programming
Scalajs React
Facebook's React on Scala.JS
Stars: ✭ 1,524 (+1248.67%)
Mutual labels:  functional-programming
Pattern Matching Ts
⚡ Pattern Matching in Typescript
Stars: ✭ 107 (-5.31%)
Mutual labels:  functional-programming
Functionaljava
Functional programming in Java
Stars: ✭ 1,472 (+1202.65%)
Mutual labels:  functional-programming
Purescript Spec
Testing framework for Purescript
Stars: ✭ 108 (-4.42%)
Mutual labels:  functional-programming
Cats Stm
An STM implementation for Cats Effect
Stars: ✭ 106 (-6.19%)
Mutual labels:  functional-programming
Freasy Monad
Easy way to create Free Monad using Scala macros with first-class Intellij support.
Stars: ✭ 112 (-0.88%)
Mutual labels:  functional-programming
Akka Stream Eventsourcing
Event sourcing for Akka Streams
Stars: ✭ 105 (-7.08%)
Mutual labels:  functional-programming
Y Combinator For Non Programmers
🍱 Y Combinator for Non-programmers: A Wild Introduction to Computer Science
Stars: ✭ 109 (-3.54%)
Mutual labels:  functional-programming
F
Functional stuff for Python
Stars: ✭ 113 (+0%)
Mutual labels:  functional-programming
Ddd On Scala
DDD sample implementation by Scala.
Stars: ✭ 113 (+0%)
Mutual labels:  functional-programming
Masala Parser
Javascript Generalized Parser Combinators
Stars: ✭ 110 (-2.65%)
Mutual labels:  functional-programming

RxTuples

RxTuples is a library to smooth RxJava usage by adding simple Tuple creation functions.

For the RxJava 2.X version, please go to RxTuples2.

Rationale

Quite often when using RxJava you find the need to forward a value alongside the result of an operation, combine several values, or simply adding an external value to the current internal state of the chain. For this you either create ad-hoc types that may only be used locally, which is inefficient.

Other languages have the concept of a Tuple built into them, which is an in-place list of values. Lots of Java libraries implement their own concept of Tuple, being a Pair, a Point, or VecX types. This library uses javatuples in an attempt to unify them. Javatuples are all "typesafe, immutable, iterable, serializable, comparable" classes ranging from 1 to 10 elements.

Usage

RxTuples come as lazily evaluated FuncN and its main use case is alongside the combineLatest, withLatestFrom, zip, and zipWith operators.

Zip a list element into a pair with their position:

Observable.zip(Observable.from(myStringList), Observable.range(0, myStringList.size()), 
               RxTuples.<String, Integer>toPair());

Merge the value of several hot observables:

Observable.combineLatest(networkSubject(), bluetoothSubject(), compassSubject(), 
                         RxTuples.<NetworkStatus, BluetoothState, CompassPosition>toTriplet());

Get the previous element from a sequence alongside the current one:

Observable.zip(compassSubject(), compassSubject().skip(1), 
               RxTuples.<CompassPosition, CompassPosition>toPair());

or more complicated cases

Observable.just(Quintet.with(1, 2, 3, 4, 5))
          .zipWith(
                Observable.just(Triplet.with(6, 7, 8)),
                RxTuples.<Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer> toOctetFromQuintet());

Distribution

Add as a dependency to your build.gradle

repositories {
    ...
    maven { url "https://jitpack.io" }
    ...
}

dependencies {
    ...
    compile 'com.github.pakoito:RxTuples:1.0.+'
    ...
}

or to your pom.xml

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.github.pakoito</groupId>
    <artifactId>RxTuples</artifactId>
    <version>1.0.0</version>
</dependency>

License

Copyright (c) pakoito 2015

The Apache Software License, Version 2.0

See LICENSE.md

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].