Size: a a a

Scala User Group

2020 February 16

AV

Abyr Valg in Scala User Group
Да хоть рантаймовым эксепшеном, прости господи
источник

KS

Kirill Shelopugin in Scala User Group
require...
источник

O

Orbarax in Scala User Group
опшен, не допускающий наллов, нарушает законы функтора:
string g(string s) => s == null ? "" : s;
string f(string s) => string.IsNullOrEmpty(s) ? null : s;

Some("").Map(f).Map(g) != Some("").Map(Compose(f, g))
источник

AV

Abyr Valg in Scala User Group
Да
источник

AV

Abyr Valg in Scala User Group
Ну, правильное решение, конечно - это убрать к херам нулл
источник

O

Orbarax in Scala User Group
из языка и среды исполнения? да, но этого не сделать уже, к сожалению
источник

AV

Abyr Valg in Scala User Group
Почему, из языка можно
источник

O

Orbarax in Scala User Group
default никуда не денется
источник

O

Orbarax in Scala User Group
new object[5] - получи 5 наллов
источник

AV

Abyr Valg in Scala User Group
Что касается нарушений законов... опшен все равно не используютв контекстах, где законы важны, опшен - это та самая пресловутая коробка
источник

AV

Abyr Valg in Scala User Group
Orbarax
new object[5] - получи 5 наллов
Ты можешь это запретить же
источник

AV

Abyr Valg in Scala User Group
На уровне компилятора
источник

O

Orbarax in Scala User Group
если речь про создание нового языка, то да, можно убрать налл, в F# как-то так сделано
источник

O

Orbarax in Scala User Group
Abyr Valg
Что касается нарушений законов... опшен все равно не используютв контекстах, где законы важны, опшен - это та самая пресловутая коробка
это не повод
источник

AV

Abyr Valg in Scala User Group
Чому? Коробок с говном в скале достаточно
источник

AV

Abyr Valg in Scala User Group
См. Фьючер
источник

O

Orbarax in Scala User Group
и вообще, опшен используется в контекстах, где если даже не законы важны, то хотя бы нужно отличать Some(null) от None
источник

O

Orbarax in Scala User Group
например
Opt<V> TryGetValue<K, V>(this IReadOnlyDictionary<K, V> that, K key) => ...
вернул None и непонятно, это налл лежал или ключа такого нет
источник

O

Orbarax in Scala User Group
такое поведение для библиотеки совершенно неприемлемо
источник

AV

Abyr Valg in Scala User Group
Orbarax
и вообще, опшен используется в контекстах, где если даже не законы важны, то хотя бы нужно отличать Some(null) от None
> то хотя бы нужно отличать Some(null) от None
Вот, блин, ни разу такого нужно не было. А протечки неприятные протечки нуллов иногда случались
источник