Alexander
A64m
а все знают кто был научруком у Вирта?
A64m
но это что-то ему не помогло
Alexander
натуральный выход из nested loop!
Alexander
for (..;!shoud_exit && ;..) { for (..; !should_exit && ...) {... }
Vitaly
Aliester
Хаски?
A64m
просто не надо писать циклы
Aliester
только рекурсия?
Denis
только рекурсия, только хардкод
Vitaly
только ката/ана?
A64m
ну это в худшем случае
A64m
лучше конечно и рекурсию не писать
Aliester
вообще код не писать
A64m
да
A64m
действительно
Denis
servant-generic какие-то более понятные ошибки дает?
Denis
я не особо понял зачем он такой нужен, когда смотрел
Kirill
Ошибки, да
Kirill
С конкретным хэндлером, а не портянкой на сто экранов
Kirill
Но оверхэд при компиляции, конечно
Leonid 🦇
Kirill
Плюс там хэндрер и апи связываются явно
Kirill
А не по номеру в портянке
Denis
Denis
т.к. у меня ошибки сейчас на 5к строк
Denis
т.е. абсолютно стали бесполезны
Leonid 🦇
К черту сервант
Kirill
От этого и убежали вродь
Denis
у меня не из-за серванта даже, в хендлерах типы длинные
Aliester
Антон
Aliester
Andrey
break это действительно нехорошо. Как и несколько return. Это все early exits, и они запутывают код.
Leonid 🦇
Andrey
А break N ещё и опасно при изменениях.
Кабачок
Denis
Vitaly
А я думал у меня препод с тараканами
Да это очень распространённое явление. Их в старые времена на фортране учили, так все мозги отбили. Вот они до сих пор несут сокровенное знание структурного программирования.
Vitaly
почему?
Потому что неструктурно!
Vitaly
Дейкстра запретил
Denis
пишешь на питоне, юзай и break
Vitaly
Ну ясно
Denis
https://2ch.hk/pr/src/1063552/15057411462320.png
Denis
ну а серьезно вполне нормальная же конструкция, мне на хаскелле приходилось с continuations делать похожее, только в десять раз замороченнее
Vitaly
Да нормальная, конечно. Сильно упрощает условия
Alexander
Alexander
Посмотрел в Hoogle краем глаза, не нашел, гм
Зигохистоморфный
Alexander
MonadFix
Не совсем, на самом деле.
Зигохистоморфный
Alexander
Да, сконструировать я могу вручную. Полагаю, даже с помощью MonadFix. Но будет ли это то же самое?
Зигохистоморфный
parket
А что значит "неструктурно"?
Alexander
опиши что надо
https://pursuit.purescript.org/packages/purescript-tailrec/3.3.0/docs/Control.Monad.Rec.Class#t:MonadRec
Здесь явно выражен шаг и условие завершения. Монада для хвостовой рекурсии.
Vitaly
А что значит "неструктурно"?
В структурном программировании есть теорема: любой алгоритм можно записать без безусловных переходов (goto, break, continue и т.п.). Вот они и требуют так писать.
Alexander
О боже, это ж...
Зигохистоморфный
Alexander
а зачем это ленивому языку?
Хвостовая рекурсия зачем? Или способ не городить дикие костыли, если хочется прервать вычисление?
parket
А пурскрипт и не ленивый
Зигохистоморфный
Leonid 🦇
в пурсе оно чтоб стэк не взрывался
Зигохистоморфный
Alexander
Зигохистоморфный
Alexander
Ну я могу ошибаться. Поправь, полезно
parket
Ну, дык, на трамплин ее, раз хвостовая, и нет оптимизации.
Alexander
Я, к сожалению, не знаком с этой концепцией :(
Зигохистоморфный
Alexander
Я видел, что оно там лежит. Я просто не знаю, что оно делает