Size: a a a

2020 April 03

AK

Alexander Krivitskiy in rust_offtopic
Alex Zhukovsky
https://habr.com/ru/post/193722/ хорошая статья в тему. Цитата:

На Хаскеле таких ошибок, ошибок уровня «ой, в этом ветвлении забыл проверить» или «перепутал возвращаемый тип» в программах не появляется. Программисты это аргументируют удобной системой типов, которая позволяет на этапе компиляции отловить большую часть таких ошибок, плюс язык, позволяющий писать главное, не отвлекаясь на счёт индексов массивов и временные переменные. Им виднее.

По опыту разборов найденных ошибок я могу сказать, что большая часть ошибок, с которыми мы сталкивались — это либо ошибка в ТЗ (то есть ошибка вашего покорного слуги), либо неправильно понятое ТЗ программистами. Но не локальная ошибка или забывчивость.

Из этого вытекает парадоксальный вывод: баги в программе на Хаскеле фиксить сложнее, чем в языках с динамической типизацией, потому что в языке с динамической типизацией очередное место, где вдруг внезапно вылез NoneType, поправил и ладушки, а на Хаскеле надо с алгоритмом разбираться да по повводу неясности ТЗ с другими людьми ругаться.
А это точно правда со всеми этими расходящимися функциями, non-exhaustive pattern matching, и thunk ами? Я когда задачки на хаскеле решаю, у меня бывает стек взрывается или в бесконечный цикл программа уходит. Плюс я в функциях не покрываю паттерн матчинг ом все кейсы, так что они будут с эксепшоном валиться на плохих аутпутах
источник

P

Pavel in rust_offtopic
я должен был это заскринить
источник

p

polunin.ai in rust_offtopic
Soul
Такой компилятор и код за тебя напишет, зачем ему какое-то промежуточное звено
Код пишешь ты, компилятор проверяет типы
источник

S

Soul in rust_offtopic
кстати где есть компилятор си под вебассембли со стандартной библиотекой в дистрибутиве?
источник

p

polunin.ai in rust_offtopic
Pavel
я должен был это заскринить
Угу, из контекста выдержать ума не надо.
источник

P

Pavel in rust_offtopic
polunin.ai
Код пишешь ты, компилятор проверяет типы
вот твой код на самой мощной в мире системе типов компилируется это значит, что он соответствует поставленной задаче?
источник

p

polunin.ai in rust_offtopic
Pavel
вот твой код на самой мощной в мире системе типов компилируется это значит, что он соответствует поставленной задаче?
Нет, иди пиши на си, чо ты
источник

P

Pavel in rust_offtopic
polunin.ai
Угу, из контекста выдержать ума не надо.
здесь контекст не важен, важно, что это идёт в паре, а контекст сыграл бы только против тебя
источник

p

polunin.ai in rust_offtopic
Pavel
здесь контекст не важен, важно, что это идёт в паре, а контекст сыграл бы только против тебя
Иди пиши на си
источник

P

Pavel in rust_offtopic
polunin.ai
Нет, иди пиши на си, чо ты
именно, что нет, спасибо, что согласился, что был неправ
источник

AK

Alexander Krivitskiy in rust_offtopic
polunin.ai
Писать без багов можно с мощной системой типов
Правда? Я тут задачку на группирование интов вбросил как-то, в итоге Хироллот в идрисе что-то совсем не то доказал и получил функцию с неверным аутпутом 👍.
источник

P

Pavel in rust_offtopic
polunin.ai
Иди пиши на си
ок, давай тз и аванс
источник

S

Soul in rust_offtopic
вроде musl туда портировали или что-то подобное, а чтобы именно готовое к использованию поставлялось - только в Zig нашёл.
источник

p

polunin.ai in rust_offtopic
Pavel
ок, давай тз и аванс
Если я и буду раздавать работу, то уж точно не сишникам
источник

AZ

Alex Zhukovsky in rust_offtopic
Alexander Krivitskiy
А это точно правда со всеми этими расходящимися функциями, non-exhaustive pattern matching, и thunk ами? Я когда задачки на хаскеле решаю, у меня бывает стек взрывается или в бесконечный цикл программа уходит. Плюс я в функциях не покрываю паттерн матчинг ом все кейсы, так что они будут с эксепшоном валиться на плохих аутпутах
пиши тотальные функции, на нонэкзостив есть ворнинг который надо делать ошибькой, thunk'и ничего плохого не делают
источник

p

polunin.ai in rust_offtopic
Alexander Krivitskiy
Правда? Я тут задачку на группирование интов вбросил как-то, в итоге Хироллот в идрисе что-то совсем не то доказал и получил функцию с неверным аутпутом 👍.
Правда? Я тут задачку на группирование интов вбросил как-то, в итоге Хироллот в с++ что-то совсем не то разыменовал и получил функцию с сегфолтом 👍.
источник

p

polunin.ai in rust_offtopic
@Psilon сделай чето с ним пж
источник

AZ

Alex Zhukovsky in rust_offtopic
@pavlus_0 предупреждение
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
@pavlus_0 предупреждение
заслуженное, но слов не забираю обратно
источник

AK

Alexander Krivitskiy in rust_offtopic
Alex Zhukovsky
пиши тотальные функции, на нонэкзостив есть ворнинг который надо делать ошибькой, thunk'и ничего плохого не делают
Тотальные функции? Какая разница, будет у меня на инппут меньше 0 error в рекурсивной функции, или эксепшн хаскеля? А то что функция расходится как чекать? А то что свойства типа выполняются как чекать?

А санки взрывают память, если их вовремя не форсировать.
источник