Skip to content

Instantly share code, notes, and snippets.

<dependency>
<groupId>org.funktionale</groupId>
<artifactId>funktionale-composition</artifactId>
<version>1.1</version>
</dependency>
<repository>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
data class Item(val name: String, val price: Double, val discount: Double, val quantity: Double)
object ItemDao {
fun findItemsForInvoice(invoiceId: Int): List<Item> {
return listOf(
Item("Item A", 10.0, 0.0, 1.0),
Item("Item B", 100.0, 0.0, 1.0),
Item("Item C", 50.0, 10.0, 3.0),
Item("Item D", 45.0, 0.0, 1.5),
Item("Item E", 8.5, 5.0, 20.0),
val items = ItemDao.findItemsForInvoice(1)
val total = items
.map { (_, itemPrice, discount, quantity) -> itemPrice * quantity to discount }
.map { (price, discount) -> price to discount / 100.0 }
.map { (price, discPercentage) -> price - (price * discPercentage) }
.sum()
val extract: (Item) -> Pair<Double, Double> = { (_, itemPrice, discount, quantity) -> itemPrice * quantity to discount }
val discount: (Pair<Double, Double>) -> Pair<Double, Double> = { (price, discount) -> price to discount / 100.0 }
val price: (Pair<Double, Double>) -> Double = { (price, discPercentage) -> price - (price * discPercentage) }
val total = items
.map(extract)
.map(discount)
.map(price)
.sum()
val total = items
.map(extract andThen discount andThen price)
.sum()
fun underline(it: String) = "_${it}_"
fun background(it: String) = "\u001B[41m$it\u001B[0m"
println((::underline forwardCompose ::background)("Hello"))
println((::underline compose ::background)("Hello"))
@MarioAriasC
MarioAriasC / gist:5552074
Last active July 30, 2017 03:20
First play with Rx for Kotlin
import rx.Observable
import rx.Subscription
import rx.util.functions.Action1
/**
* Created by IntelliJ IDEA.
* @author Mario Arias
* Date: 9/05/13
* Time: 21:11
*/