raulraja
11/18/2019, 8:58 AMTuple
runtime with type proofs and automatic conversions coming up in Arrow Metadrieks
11/18/2019, 9:27 AMinline fun <A, B> tupled(a: A, b: B): Tupel2<A, B> =
Tupled(arrayOf(name, age)).widen()
fun Person.tupled(): Tuple2<String, Int> = tupled(name, age)
raulraja
11/18/2019, 1:26 PMdrieks
11/19/2019, 7:00 AM@tupled
data class Person(val name: String, val age: Int)
could generate:
typealias TupleForPerson = Tupel2<String, Int>
@proof(conversion = true)
inline fun Person.tupled(): TupleForPerson = tupled(name, age)
@proof(conversion = true)
inline fun TupleForPerson.person(): Person {
val (name, age) = this
return Person(name, age)
}
raulraja
11/19/2019, 9:51 AM