Size: a a a

2018 February 26

λO

λeonid Onokhov in fprog_spb
А если бы ты не корректно указал ограничение?
источник

AK

Artyom Kazak in fprog_spb
не понял
источник

λO

λeonid Onokhov in fprog_spb
ну ошибся в спеке refinement types твоих
источник

Y

Yuuri in fprog_spb
Я тоже не понимаю принципиально разницы
источник

Y

Yuuri in fprog_spb
λeonid Onokhov
Ну если ты вместо юзернейма подал фамилию то это ошибка типизации. Если ты забыл проверить пароль то это логическая ошибка же
А если у нас есть тип "проверенный пароль"?
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
Некоторые логические ошибки можно забороть достаточно выразительными типами
источник

λO

λeonid Onokhov in fprog_spb
Yuuri
А если у нас есть тип "проверенный пароль"?
Ну если его надо таскать как пруф с собой, то может конечно :)
источник

Y

Yuuri in fprog_spb
А так-то и перепутать имя с фамилией не ошибка типизации, обе строки же :)
источник

λO

λeonid Onokhov in fprog_spb
Aleksei (astynax) Pirogov
Некоторые логические ошибки можно забороть достаточно выразительными типами
многие можно забороть тупо newtype'ом
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
именно
источник

λO

λeonid Onokhov in fprog_spb
Yuuri
А так-то и перепутать имя с фамилией не ошибка типизации, обе строки же :)
Они строками будут только когда парсишь
источник

Y

Yuuri in fprog_spb
Зависит от реализации
источник

AK

Artyom Kazak in fprog_spb
какие логические ошибки *нельзя* забороть бесконечно выразительными типами?

по-моему, тут дихотомия уровня "если разрабу очевидно, что правильное поведение только одно, то допущение другого поведения — это ошибка типов. Если 'правильных' поведений может быть несколько и надо выбирать, а разраб выбрал неправильно, это логическая ошибка"
источник

λO

λeonid Onokhov in fprog_spb
Yuuri
Зависит от реализации
ну вот реализовать так, что-бы перепутывание имени с фамилией были ошибками типизации, совсем не сложно
источник

λO

λeonid Onokhov in fprog_spb
Artyom Kazak
какие логические ошибки *нельзя* забороть бесконечно выразительными типами?

по-моему, тут дихотомия уровня "если разрабу очевидно, что правильное поведение только одно, то допущение другого поведения — это ошибка типов. Если 'правильных' поведений может быть несколько и надо выбирать, а разраб выбрал неправильно, это логическая ошибка"
А чем забарывать логические ошибки в описании типа?
источник

Y

Yuuri in fprog_spb
+1 к Артёму
источник

AP

Aleksei (astynax) Pirogov in fprog_spb
Тестами для типов :)
источник

AK

Artyom Kazak in fprog_spb
объясняю

идеальный тайпчекер читает техзадание и проверяет, что программа ему соответствует

всё, все ошибки стали ошибками типов

(да, такой тайпчекер реализовать невозможно, пофиг)
источник

λO

λeonid Onokhov in fprog_spb
Aleksei (astynax) Pirogov
Тестами для типов :)
зачёт
источник

λO

λeonid Onokhov in fprog_spb
Artyom Kazak
объясняю

идеальный тайпчекер читает техзадание и проверяет, что программа ему соответствует

всё, все ошибки стали ошибками типов

(да, такой тайпчекер реализовать невозможно, пофиг)
А техзадание надо писать на формальном языке, что-бы тайпчекер понял!
источник