<@U7ZCUENUX> with 0.7.2 which is on its way to cen...
# arrow
r
@kluck with 0.7.2 which is on its way to central you can use
Applicative#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
Copy code
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
Copy code
@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()
  }