Leonid 🦇
а что у hasql интерфейс поменялся?
A64m
доклад по deriving via нормальный, хоть какая-никакая фича, которая могла бы появиться в ближайшее время, но автор все не пишет пропозал, а когда напишет - его будут год обсуждать. Короче говоря, фичи не будет, код имплементации сгниет
Alexander
@lonokhov вроде нет
Alexander
просто это модно делать 1.0
Leonid 🦇
"Новый Hasql: Проще и Быстрее" ну незнаю, доклад вот
Alexander
Никита идёт в форватере ко-ко-комитета
A64m
мне понравился доклад по линейным типам, но @qnikst и так должен знать что там рассказывают
Alexander
ну я смотрю в хаддоки и вообще разницы не видел
Alexander
да Арно на нас тренировался
Alexander
я кстати после этого менее радстным стал по отношению к ним
Alexander
я вообще не понимаю как с исключениями работать там
Alexander
bracket не написать
Alexander
аналоги ResourceT/Region - безопасно тоже
Alexander
можно делать bracket и результат заворачивать в линейный тип
Alexander
можно делать умный освобождатель
Alexander
можно не использовать линейные типы для ресурсов
Alexander
но это как-то defeats the purpose
Alexander
для всяких стримов и т.п. можно использовать конечно, но там бонус какой-то.. мелкий
A64m
ну у меня изначально ожидания были не завышенные
A64m
ну для стримов бонус есть, все-таки все эти удержания стрима в памяти делают сам стриминг бессмысленным, но там же апи стримов серьезно страдает
Leonid 🦇
бонус в что оптимизации ghc не будут с мусором мутить у стримов это же уже хорошо
Leonid 🦇
вот да
A64m
так что я бы не сказал, что бонус мелкий, но ради него надо пострадать конечно
A64m
а то что линейные типы с исключениями не дружат - это вроде из самого определения следует
A64m
вообще какое-никакое практическое использование у чего-то родственного линейным типам было только для изменений на месте в клине
A64m
но там ощущения от всего этого не очень веселые
A64m
а если линейные типы применять для модификаций на месте то через обручи попрыгать только больше придется, чем в клине
A64m
те. какие-то применения у них могут быть, но какой-то энтузиазм, которым загорелись по этому поводу на хаскельреддите особых оснований не имеет
Alexander
ну оно не даст стрим случайно переиспользовать
Alexander
во всяком случае в нескольких ближайших релизах на отвельный хип и т.п. надеяться не стоит
Alexander
inplace структуры наверное можно реализовать с этим
Alexander
или чистый интерфейс к мутальной структуре
Alexander
для тех кто не любит IO таскать
Alexander
вот destination passing style выглядит с линейными типами логичным
Alexander
но там исключения и БАХ БАМ!
Alexander
все равно их в GC-ed хипе хранить
Alexander
ну или хотя бы регион
A64m
там интерфейс чистый но требует "протягивания" все равно, т.е. или лапша будет или стейт-монаду использовать, но обычную стейт-монаду использовать нельзя, так что синтаксис для монад недоступен (ну кроме какого-то там сурового оверлоада, которым никто не пользуется на самом деле).
A64m
короче говоря, код на клине с изменениями на месте с чистым интерфейсом страшнее ST в хаскеле выглядит
A64m
разве что лучше с лишними копированиями для безопасности борется, это да
A64m
это при том что в клине специальный синтаксис есть для let-no-rec
Alexander
там они делали в качестве магистрской (или просто летней работы) черта streaming-safe
Alexander
типа стриминг но с линейными типами
Alexander
у них там какой-то ад был с оверлоадингом и rebindable syntax
A64m
там же куча функций типа drop (могу путать) в принципе на линейных стримах не делается
Alexander
при этом ещё и без takeWhile/dropWhile остались
Alexander
угу
A64m
это еще к тому что нормальный монадический интерфейс импользовать нельзя
Alexander
ну они вроде использовали
A64m
т.е. стримы -то будут работать как надо, но интерфейс у них вообще адовый будет
Alexander
с другой стороны поидее стримы могут все прятать внутрь
Alexander
когда ты свою пускалку стрима не пишешь
Alexander
а для исключений нужны не линейные а афинные типы
A64m
да и для мутабельности на месте лучше афинные
A64m
если я не путаю как называются те, которые гарантированного "потребления" не требуют
Alexander
они
Alexander
мне в этом отношении раст нравится
A64m
но при всех проблемах, то что линейные типы делают для хаскеля - я все равно считаю положительным, будут что-то делать, появятся какие-то идеи и решения проблем, ну или костыли хотя-бы
A64m
т.е. будет как-то эта тема развиваться
Alexander
не считая ада с замыканиями и т.п. и того, что иногда "какого-хрена-оно-не-работает-хотя-должно"
Alexander
да
Alexander
в общем-то такой план
Alexander
так у раста достаточно понятный смысл, особенно учитывая что у них все завязано на обычный стек, то вообще все понятно
Alexander
(в большинстве случаев)
Anonymous
A64m
"Новый Hasql: Проще и Быстрее" ну незнаю, доклад вот
Волков же что-то писал, или в том докладе рассказывал, я не помню уже, что зарелизил старую библиотеку как 1, а новую продолжает разрабатывать с версиями 0.X - какая-то очень странная идея
Alexander
в духе снойманитов
Alexander
со странным пониманием версионирования
A64m
также я посмотрел доклад по Зено, но там как-то конкретики маловато
A64m
вообще там много нормальных докладов для начинающих (по оптимизатору ГХЦ два, по разным ансейфперформам, и по ликвидхаскелю) но кто не начинающий - то уже все это сто раз слышал, конечно
Зигохистоморфный
каким?
тупые эмоджи везде пихать
Anonymous
почему везде и почему тупые?
A64m
в принципе, по алгебраическим графам доклад нормальный
Зигохистоморфный
почему везде и почему тупые?
а что хорошего в них? в коде как-то без них надо обходиться (попривыкали что в жс эту дурь пихают)
A64m
но это из разряда всяких "функциональных жемчужин"
Anonymous
что за аргументы
Зигохистоморфный
в принципе, по алгебраическим графам доклад нормальный
у Берда там была такая тема про это вроде
Зигохистоморфный
а в го без генериков обходятся
аргумент что это не детские забавы и тебе не 5 лет
A64m
у берда больше про то, как делаем наивную простую реализацию-"спецификацию" и потом радом трансформаций получаем эффективную