Size: a a a

Kotlin Community

2020 March 19

М

Максим in Kotlin Community
начали выпадать KotlinFrontEndException после добавления arrow
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Тащить arrow только ради Either - странное решение, тем более, что сейчас Result общедоступен. Опшены в котлин вообще не нужны. И да, это не про ФП, это про один конкретный стиль пробрасывания ошибок
Ну эт не правда, Result всё еще падает на компайл тайме
источник

AO

Alexey Otts in Kotlin Community
Boris Vanin
опшен не нужен, у котлина же для этого есть свой тип
Сто раз уже обсуждали, что это не эквивалент
источник

BV

Boris Vanin in Kotlin Community
Alexey Otts
Сто раз уже обсуждали, что это не эквивалент
именно, что эквивалент, да он другой, но это эквивалент. Более того, экстеншенами можно из него сделать точную копию, только без дополнительной обертки
источник

BV

Boris Vanin in Kotlin Community
более того, этот опшнл поддерживается стдлибом, так что вообще не вижу смысла использовать какой-то другой
источник

AO

Alexey Otts in Kotlin Community
Boris Vanin
именно, что эквивалент, да он другой, но это эквивалент. Более того, экстеншенами можно из него сделать точную копию, только без дополнительной обертки
val flag = true
fun <A> foo(f: () -> A): A? = if(flag) f() else null
fun <A> bar(f: () ->A): A = foo(f).let { res -> if(res == null) throw Exception("shit happens) else res }

val res = bar<Int?> { null } //oops expected null but exception was thrown
источник

AO

Alexey Otts in Kotlin Community
В каком месте это эквивалент то ну?
источник

AO

Alexey Otts in Kotlin Community
С Option такого быть не может, потому что Option - это тип данных, а nullable - это объединение типов A | Null
источник

BV

Boris Vanin in Kotlin Community
Alexey Otts
val flag = true
fun <A> foo(f: () -> A): A? = if(flag) f() else null
fun <A> bar(f: () ->A): A = foo(f).let { res -> if(res == null) throw Exception("shit happens) else res }

val res = bar<Int?> { null } //oops expected null but exception was thrown
Не понял, если ты бросаешь эксепшн, то с чего вдруг null?
источник

BV

Boris Vanin in Kotlin Community
Или я не понял, что ты хочешь сделать
источник

AO

Alexey Otts in Kotlin Community
Представь что там написано Option вместо nullable
источник

BV

Boris Vanin in Kotlin Community
Alexey Otts
Представь что там написано Option вместо nullable
Ну, если ты на None кидаешь эксепшн и потом его передашь в параметр, то тоже эксепшн будет
источник

AO

Alexey Otts in Kotlin Community
Boris Vanin
Ну, если ты на None кидаешь эксепшн и потом его передашь в параметр, то тоже эксепшн будет
Я про нормальный Option, а не про жавовый
источник

AO

Alexey Otts in Kotlin Community
В случае Option foo вернёт Some(None) и в итоге None вернётся из bar и не будет никаких исключений, в случае с nullable так нельзя
источник

BV

Boris Vanin in Kotlin Community
Alexey Otts
Я про нормальный Option, а не про жавовый
Ну, ты напиши как этот же код с опшнл будет выглядеть
источник

BV

Boris Vanin in Kotlin Community
Alexey Otts
В случае Option foo вернёт Some(None) и в итоге None вернётся из bar и не будет никаких исключений, в случае с nullable так нельзя
Ты в том смысле, что опшнлы можно друг в друга заворачивать?
источник

AN

Alexander Nozik in Kotlin Community
Всем идти читать Елизарова на эту тему
источник

M

Mi in Kotlin Community
Судя по разговорам пора уже сделать light arrow библиотеку где есть только option да either
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Всем идти читать Елизарова на эту тему
Да хоть сколько ты зачитайся, сути это не поменяет
источник

BV

Boris Vanin in Kotlin Community
Да, и правда мы это обсуждали
источник