dnowak
12/22/2021, 5:04 PMraulraja
12/22/2021, 9:57 PMraulraja
12/22/2021, 9:58 PMUnit
.raulraja
12/22/2021, 9:58 PMraulraja
12/22/2021, 9:59 PMpublic fun divide(num: Int, den: Int): Int =
num / den
public data class User(val id: Int, val name: String)
public fun createUser(name: String, id: Int): User =
User(id, name)
public fun main() {
val halfOf = Partial(::divide).second(2)
val ten: Int = halfOf(20)
val createUserJaneWithId = Partial(::createUser).first("Jane")
val jane = createUserJaneWithId(ten)
println(jane) //User(id=10, name=Jane)
}
raulraja
12/22/2021, 10:00 PMPartial(::divide).second(2) //applies the second arg
raulraja
12/22/2021, 10:00 PMval createUserJaneWithId = Partial(::createUser).first("Jane") // applies the first arg
raulraja
12/22/2021, 10:00 PMPartial
is a fun interface
it is also a function that can be invokedraulraja
12/22/2021, 10:02 PMpublic operator fun invoke(a: A, b: B): Partial<Unit, Unit, C, D, Z> =
Partial { _, _, c, d -> invoke(a, b, c, d) }
raulraja
12/22/2021, 10:05 PMraulraja
12/22/2021, 10:10 PMdnowak
12/23/2021, 10:38 AMcurried
or chain of partially1
creates a bunch of functions.dnowak
12/23/2021, 10:40 AMdnowak
12/23/2021, 10:42 AMraulraja
12/23/2021, 10:55 AMdnowak
12/23/2021, 2:01 PMraulraja
12/23/2021, 2:07 PMraulraja
12/23/2021, 2:07 PMraulraja
12/23/2021, 2:08 PMdnowak
12/23/2021, 2:11 PM