raulraja
05/29/2018, 4:20 PMApplicative#map
on any data type without having to know about Applicative
and with generic
you can get mappers that go straight to data classes:
without arrow-generic
data class Account(val balance: Int, val available: Int)
val maybeAccount: Option<Account> =
ForOption extensions {
val maybeBalance: Option<Int> = ...
val maybeAvailable: Option<Int> = ...
map(maybeBalance, maybeAvailable, { (balance, available) ->
Account(balance, available)
}).fix()
}
with arrow-generic
@generic
data class Account(val balance: Int, val available: Int) {
companion object
}
val maybeAccount: Option<Account> =
ForOption extensions {
val maybeBalance: Option<Int> = ...
val maybeAvailable: Option<Int> = ...
mapToAccount(maybeBalance, maybeAvailable).fix()
}