ivanmorgillo
11/19/2021, 4:58 PMivanmorgillo
11/19/2021, 4:59 PMkapt
, I added the dependencies:
implementation(platform("io.arrow-kt:arrow-stack:1.0.1"))
implementation("io.arrow-kt:arrow-core")
implementation("io.arrow-kt:arrow-optics")
ivanmorgillo
11/19/2021, 4:59 PM@optics
sealed class ContactInformation {
companion object {}
data class Email(val value: String) : ContactInformation()
@optics
sealed class Phone : ContactInformation() {
companion object {}
@optics
data class MobilePhone(val number: String) : Phone() { companion object }
@optics
data class OfficePhone(val number: String) : Phone() { companion object }
@optics
data class HomePhone(val number: String) : Phone() { companion object }
}
data class HomeAddress(val street: String) : ContactInformation()
object Pigeon : ContactInformation()
}
@optics
data class UserProfile(val name: String, val contact: ContactInformation) { companion object }
ivanmorgillo
11/19/2021, 4:59 PMUserProfile.contact.phone.modify(joe) { MobilePhone("1234567890") }
ivanmorgillo
11/19/2021, 5:00 PMivanmorgillo
11/19/2021, 5:00 PMLuke
11/19/2021, 5:03 PMkapt "io.arrow-kt:arrow-meta:<version>"
, it worked for meLuke
11/19/2021, 5:04 PMkapt "io.arrow-kt:arrow-meta"
will work with arrow-stack I guessstojan
11/19/2021, 5:04 PMkapt
and the arrow-meta dependency included
https://arrow-kt.io/docs/optics/#basic-setupivanmorgillo
11/19/2021, 5:07 PMimplementation("io.arrow-kt:arrow-optics:1.0.1")
kapt("io.arrow-kt:arrow-meta:1.0.1")
it works 👍
this instead
implementation(platform("io.arrow-kt:arrow-stack:1.0.1"))
implementation("io.arrow-kt:arrow-core")
implementation("io.arrow-kt:arrow-optics")
is not enough 👎ivanmorgillo
11/19/2021, 5:08 PMivanmorgillo
11/19/2021, 5:08 PMTies
11/19/2021, 6:53 PMassemble
to actually generate the code