Size: a a a

Programming Offtop

2020 November 03

ML

Mikhail Levchenko in Programming Offtop
взяли правое, потому что созвучно с "правильный" в английском
источник

ML

Mikhail Levchenko in Programming Offtop
собсна для удобства использования именно как хендлинг ошибок
источник

с#

саша сок #KotlinGang... in Programming Offtop
Mikhail Levchenko
взяли правое, потому что созвучно с "правильный" в английском
да и в русском тоже созвучно)
источник

ML

Mikhail Levchenko in Programming Offtop
саша сок #KotlinGang
да и в русском тоже созвучно)
ну в английском это прям омонимы
источник

с#

саша сок #KotlinGang... in Programming Offtop
источник

KD

Konstantin Dovnar in Programming Offtop
Mikhail Levchenko
собсна для удобства использования именно как хендлинг ошибок
Видимо мне слишком промыли голову тем, что Result — частный случай Either для обработки ошибок, а отсюда в голове идёт, что значит Either уже для остальных кейсов
источник

ML

Mikhail Levchenko in Programming Offtop
Konstantin Dovnar
Видимо мне слишком промыли голову тем, что Result — частный случай Either для обработки ошибок, а отсюда в голове идёт, что значит Either уже для остальных кейсов
в Result тип ошибки всегда throwable.
источник

ML

Mikhail Levchenko in Programming Offtop
а в Either это может быть твой enum с доменными ошибками если упарываешься по клину
источник

AM

Andrew Mikhaylov in Programming Offtop
источник

VP

Vladimir Petrakovich in Programming Offtop
Konstantin Dovnar
Да, я о таком варианте думал.
Будет, конечно, что-то вроде
either.flatMapRight {}.flatMapLeft {}
что не совсем круто, но хоть как-то.
У меня в Either такая функция есть
fun <T> fold(onFailure: (L) -> T, onSuccess: (R) -> T): T
источник

KD

Konstantin Dovnar in Programming Offtop
Vladimir Petrakovich
У меня в Either такая функция есть
fun <T> fold(onFailure: (L) -> T, onSuccess: (R) -> T): T
Це форд, да, он у меня тоже есть.
Но это ведь не тоже самое, что map.
источник

VP

Vladimir Petrakovich in Programming Offtop
Konstantin Dovnar
Це форд, да, он у меня тоже есть.
Но это ведь не тоже самое, что map.
Ну это про "обработать обе ветки"
источник

AM

Andrew Mikhaylov in Programming Offtop
Vladimir Petrakovich
У меня в Either такая функция есть
fun <T> fold(onFailure: (L) -> T, onSuccess: (R) -> T): T
Так не о fold речь, а о "flatFold", в котором параметры будут возвращать не T, а Either-ы.
источник

AM

Andrew Mikhaylov in Programming Offtop
Я тоже не представляю себе, как это должно выглядеть.
источник

КР

Кирилл Романенко... in Programming Offtop
Andrew Mikhaylov
Я тоже не представляю себе, как это должно выглядеть.
Ммм, bimap?
источник

AM

Andrew Mikhaylov in Programming Offtop
источник

VP

Vladimir Petrakovich in Programming Offtop
Andrew Mikhaylov
Так не о fold речь, а о "flatFold", в котором параметры будут возвращать не T, а Either-ы.
T тоже может быть Either
источник

КР

Кирилл Романенко... in Programming Offtop
Andrew Mikhaylov
Я тоже не представляю себе, как это должно выглядеть.
inline fun <A, B, C, D> Either<A, B>.bimap(leftOperation: (A) -> C, rightOperation: (B) -> D): Either<C, D> =
   when (this) {
       is Either.Left -> Either.Left(leftOperation(value))
       is Either.Right -> Either.Right(rightOperation(value))
   }
источник

AM

Andrew Mikhaylov in Programming Offtop
Кирилл Романенко
inline fun <A, B, C, D> Either<A, B>.bimap(leftOperation: (A) -> C, rightOperation: (B) -> D): Either<C, D> =
   when (this) {
       is Either.Left -> Either.Left(leftOperation(value))
       is Either.Right -> Either.Right(rightOperation(value))
   }
Я знаю, как выглядит бимап, спасибо :)
источник

AM

Andrew Mikhaylov in Programming Offtop
Читай внимательнее, пожалуйста
источник