carbaj0
10/16/2020, 3:50 AMoption.fx {}
?
this cannot be achieved with nullable, right?
should I replace it with either.fx { }
?carbaj0
10/16/2020, 3:59 AMclass DebitCardNumber private constructor(
val number: String
) {
companion object {
private const val Mastercard = "^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}\$"
suspend operator fun invoke(number: String): Either<Unit, DebitCardNumber> =
if (number.matches(Mastercard.toRegex())) DebitCardNumber(number).right() else Unit.left()
}
}
carbaj0
10/16/2020, 4:01 AMIO.fx {
val validCardNumber = !effect { DebitCardNumber(cardNumber) }
Either.fx<Unit, DebitCard> {
VirtualDebitCard(
cardNumber = !validCardNumber,
accountNumber = accountNumber ?: "",
contractNumber = contractNumber ?: "",
cardStatus = cardStatus ?: "",
cancelIndicator = cancelReason ?: "",
cancelReason = cancelIndicator ?: "",
cardAlias = cardAlias ?: ""
)
}
}.suspended()
simon.vergauwen
10/16/2020, 4:50 AMnullable
, and someone is contributing it 🙂 https://github.com/arrow-kt/arrow-core/pull/251carbaj0
10/16/2020, 6:44 AMsealed class Shift<out T>
object Empty : Shift<Nothing>()
data class Result<T>(val result: T) : Shift<T>()
carbaj0
10/16/2020, 6:44 AMkioba
10/16/2020, 7:19 AMcarbaj0
10/16/2020, 10:48 AM