Alexander
online книжку / сайт бы
Да, у меня тоже такие мысли были
Vitaly
Ну можно эксцепшн райзить ;)
Господь с вами, за такое вообще убьют
A64m
а все знают кто был научруком у Вирта?
Aliester
У нас, кстати, некоторые преподаватели до сих пор break использовать запрещают, даже в Python
мой препод по алгоритмам говорила что брейки и continue - читерство, а алгоритм должен быть натуральным
A64m
но это что-то ему не помогло
Alexander
натуральный выход из nested loop!
Alexander
for (..;!shoud_exit && ;..) { for (..; !should_exit && ...) {... }
Vitaly
а все знают кто был научруком у Вирта?
Я знаю только его ученика
Aliester
Хаски?
Aliester
натуральный выход из nested loop!
нет, нужно писать код в котором оттуда не надо выходить
A64m
просто не надо писать циклы
Aliester
только рекурсия?
Denis
только рекурсия, только хардкод
Vitaly
только ката/ана?
A64m
ну это в худшем случае
A64m
лучше конечно и рекурсию не писать
Aliester
вообще код не писать
A64m
да
A64m
действительно
Kirill
с большим развесистым API в серванте можно пожалеть что ты на свет родился
Мы впилили servant-generic, вроде полегч, но у нас только бэкэнд, например
Denis
servant-generic какие-то более понятные ошибки дает?
Denis
я не особо понял зачем он такой нужен, когда смотрел
Kirill
Ошибки, да
Kirill
С конкретным хэндлером, а не портянкой на сто экранов
Kirill
Но оверхэд при компиляции, конечно
Kirill
Плюс там хэндрер и апи связываются явно
Kirill
А не по номеру в портянке
Denis
т.к. у меня ошибки сейчас на 5к строк
Denis
т.е. абсолютно стали бесполезны
Leonid 🦇
К черту сервант
Kirill
От этого и убежали вродь
Denis
у меня не из-за серванта даже, в хендлерах типы длинные
Aleksei (astynax)
Пейтон Джонс
Чума, Саймон, Пейтон, Джонс
Aliester
Чума, Саймон, Пейтон, Джонс
Все зайдите, пожалуйста
Антон
A64m
Чума, Саймон, Пейтон, Джонс
у него имен на всех четырех всадников, вообще. Знать бы еще что за L.
Aliester
Andrey
break это действительно нехорошо. Как и несколько return. Это все early exits, и они запутывают код.
Andrey
А break N ещё и опасно при изменениях.
Vitaly
А я думал у меня препод с тараканами
Да это очень распространённое явление. Их в старые времена на фортране учили, так все мозги отбили. Вот они до сих пор несут сокровенное знание структурного программирования.
Vitaly
почему?
Потому что неструктурно!
Vitaly
Дейкстра запретил
Denis
пишешь на питоне, юзай и break
Vitaly
Ну ясно
Denis
https://2ch.hk/pr/src/1063552/15057411462320.png
Denis
ну а серьезно вполне нормальная же конструкция, мне на хаскелле приходилось с continuations делать похожее, только в десять раз замороченнее
Vitaly
Да нормальная, конечно. Сильно упрощает условия
Alexander
https://2ch.hk/pr/src/1063552/15057411462320.png
Согласен, кстати. Питон - поделие двоечника. Кривой со всех сторон.
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
Я, к сожалению, не знаком с этой концепцией :(
Зигохистоморфный
Зигохистоморфный
Я, к сожалению, не знаком с этой концепцией :(
https://github.com/purescript/purescript-free/blob/master/src/Control/Monad/Trampoline.purs
Alexander
Я видел, что оно там лежит. Я просто не знаю, что оно делает
Зигохистоморфный
Я видел, что оно там лежит. Я просто не знаю, что оно делает
ну тут почитай секцию "Coroutine Pipelines" https://themonadreader.files.wordpress.com/2011/10/issue19.pdf