Alexander
Да, делается. Но с freer моки - это паттерн-матчинг. Правда, если много бизнес-логики вовлечено, то там все начинает плохо выглядеть
Alexander
там для специализаций отлючения было что-то
Alexander
я кстати ищу кейсы где freer будет лучше, пока знаю 0
Alexander
freer+effects
Alexander
А я, в свою очередь, не вижу предмета спора. Дело вкуса. По крайней мере до тех пор, пока сообщество прочно не поймет плюсы и минусы
Alexander
какой спор, я ж вроде вопрос задал и интересуюсь
Alexander
Не вижу в сообщении знака вопроса ;)
Alexander
Я человек простой, - вижу вопрос, отвечаю. Не вижу - не отвечаю
Alexander
...я кстати ищу кейсы где freer будет лучше, пока знаю 0 <- не спор а призвание делиться такими кейсами
Alexander
free(r) <-> final tagless конвертируются в обе стороны
Alexander
Я все же не смогу ответить удовлетворительно, потому что это ж надо несколько кейсов иметь, сравнивать их, понимать. У меня пока только 1.
Alexander
т.е. из одного другое можно легко сделать
Alexander
(На самом деле, больше, но то уже из другой оперы)
Alexander
тогда возникает вопрос, может один из вариантов лучше
Alexander
Просто для информации: наши freer-языки - это такие: OrderL RestaurantL CompanyL ... Каждый из них что-то умеет по своему контексту. А есть контексты более верхнего уровня, они уже пользуют эти вот языки
кана
у олега точно был пейпер, показывающий проблемы инициальных интерпретаторов (фри[р]) и как терминальные интерпретаторы (финал тэглесс) их решают
Alexander
MonadOrder, MonadRestaurant, MonadCompany
Alexander
@kana_sama у него было и наоброт
Alexander
exteff.pdf
Alexander
когда он extensible-effects вводил, показывал как в mtl у нас чепуха получается, а с эффектами и free все хорошо
кана
ну эксэфф это пара страниц, а там было штук 50 наверное
Alexander
12
Alexander
одна из проблем freer что они тормозят
кана
а ты вычел код, референсы, опен юнионы и прочее подводящее к теме? там про плюсы/минусы фри-эффектов пара страниц, но цифра таки с головы
Alexander
Если искать проблемы, то их для любого подхода, наверное можно найти пачку на 50 страниц. Но это ж все лирика.
Alexander
нет, то если вычитать то будет 9
Alexander
вот тормозит это чисто практическая проблема
Alexander
при этом если нужен внешний интерпретатор то ради этого интерпретатора можно теги втянуть
Alexander
одним простым инстансом
Alexander
Вон, про С++ целый талмуд на 1300 страниц проблем наскребли, но ведь никого же это не останавливает
Oleg
А вот этот ваш 8.2 с джойн-пойнтами не решает "тормозит" хотя бы частично?
Alexander
вот тормозит это чисто практическая проблема
У нас обращение к внешнему сервису инвойсов тормозит на порядок больше, так что какая разница.
Alexander
писать не удобно (субьективно(, тормозит, подход не популярный
Alexander
Да, мы пьем смузи и катаемся на гироскутерах
Alexander
:/
Alexander
Александр, вы слишком много времени проводите в fprog_spb похоже
Alexander
Александр, вы слишком много времени проводите в fprog_spb похоже
И это не случайно. Там тихо, почти нет активности, никто не мешает думать. Поэтому я открываю fprog_sbp на всех мониторах и спокойно себе интровертирую
Ю ли я? 🤔
Настоящие хаскелисты пьют борщ и катаются на штангах?
Ю ли я? 🤔
На санках, во.
Alexander
на санках это старкрафт какой-то
Alexander
На санках, во.
На каждом метре создаются новые санки.
A64m
А вот этот ваш 8.2 с джойн-пойнтами не решает "тормозит" хотя бы частично?
а чем джойн-пойнты могут помочь с тормозами "интерпретаторов" всяких деревьев по сравнению с таглесс файнл?
Alexander
вот хочешь про haskell поговорить и обсудить чужие взгляды, а там все в штыки воспринимают и про смузи говорят
кана
все дело в токсичности
Alexander
я токсично спрашивал?
Oleg
а чем джойн-пойнты могут помочь с тормозами "интерпретаторов" всяких деревьев по сравнению с таглесс файнл?
Я мож плохо читал, но если полиморфная функция хорошо заинлайнится в интерпретатор, там разве куча аллокаций не уйдёт?
Alexander
тут проблема в самом интерпретаторе, у нас на каждый чих аллоцированы данные которые мы матчим
Alexander
если я верно понимаю
A64m
тут дело не в аллокациях, а в сравнении матчинга в рантайме и отсуствия матчинга
Alexander
в отличии от таглес где этого нету
A64m
но вообще, с джойн-пойнтами "интерпретаторы" лучше должны оптимизироваться, особенно стримы всякие где "интерпретируемый" алгдт не рекурсивный, но все равно, проверка в рантайме есть проверка в рантайме
Oleg
Опять же, крайне не уверен в своих словах, но разве джойн-пойнты не смогут превратить паттерн-матчи в почти что джампы в интерпретаторе, ну т.е. почти то же самое, как если бы вы дикт с методами передавали?
A64m
так в ТФ словари остаются в худшем случае, в нормальном там вообще инлайнится все и специализируется, ничего не остается
A64m
а ТФ на модулях в любом случае ничего не остается
Alexander
@graninas кстати у вас free или freer?
A64m
но "лучше" не в смысле что они раньше так не оптимизировались, джойн-пойнты (пока) ничего нового не дают в этом смысле, они просто не дают испортить одни оптимизации другими, что раньше случалось
Alexander
@A64m_qb0 а у foldFree mmorph интересно есть ли шанс заинлайниться и убрать прыжки по тегам, если все развернуть
Alexander
@graninas кстати у вас free или freer?
freer от Takt, Inc Но я без понятия, ведь название либы - это одно, а устройство - это другое.
Oleg
или в 7.8
Alexander
freer от Takt, Inc Но я без понятия, ведь название либы - это одно, а устройство - это другое.
ну на hackage и у Takt одна и та же либа правда почему-то разные авторы и ссылается на разные места
A64m
Я помню ты что-то ругался про что там сломалось в 7.10
не факт, что это с джойн-пойнами связано было
Alexander
а такт форкнуло и ещё 30 коммитов добавили
Alexander
норм ребята
Alexander
5 месяцев ещё код подабавляли
Alexander
https://github.com/TaktInc/freer
Alexander
спасибо.
Alexander
если что я уже третью минуту смотрю диф того что у них и того что на hackage
Alexander
/me слоупок, ничего не поделать
Alexander
регионы запилили, молодцы
Alexander
кстати там расширяемые исключения поддерживаются или все ещё нет?
Alexander
Я не уверен, что значит "расширяемые исключения". Можно бросать и перехватывать свои собственные.
Alexander
https://simonmar.github.io/bib/papers/ext-exceptions.pdf
Alexander
Но там есть заморочки с тем, где и как исключения перехватываются. Если бросить в логике, то дальнейший код уже без шансов выполнить. Перехват теперь возможен только в интерпретаторе.