Alexander
это так страшно?
Vladislav
Да и я хочу исследовать идею монадных морфизмов, о которых Кметт недавно выступал, чтобы лифтов не было
кана
можно подробнее?
Зигохистоморфный
ну вот с фриер бесплатно можно монаду сделать
Vladislav
Все эти extensible effects не думают о двух вещах, о производительности и о ContT
Vladislav
А соответственно остаются игрушками
Зигохистоморфный
Зигохистоморфный
Vladislav
Компилятор умеет мономорфный StateT преобразовывать практически в код, который делается императивными компиляторами.
Vladislav
Всякие freer решили проблемы с печальной асимптотикой, но это не дает raw performance, это асимптотика
Vladislav
а о ContT, много им пользуются?
Вопрос не в том, насколько часто он нужен, а в том, что ты будешь делать, когда понадобится. Терпеть и на трансформеры переписывать, вот что
Зигохистоморфный
но я думаю Киселев когда-то допилит свою идею
Vladislav
Там нечего допиливать, идея изначально ограниченная
Vladislav
Он по условию задачи занимается алгебраическими эффектами, но не все эффекты алгебраические.
Vladislav
Это может стать полезным фреймворком в каких-то условиях, но никогда не заменит трансформеры
Зигохистоморфный
а какая идея не ограниченная?
Зигохистоморфный
а вы что думали?))) https://gist.github.com/gcanti/4edc2c46b37fb86cdf1234469d9734cc
Vladislav
Зигохистоморфный
а mtl?
Зигохистоморфный
или фандепы это оверхед?
Евгений
Alexander
mtl, monan-classes и т.п. это все трансформеры
Alexander
просто более высокий интерфейс
Зигохистоморфный
а трансформеры могут больше одного ридера?
Vladislav
Алегбра эффектов описывает операции, которые ты можешь делать.
Vladislav
Alexander
@xgrommx хоть 100
Alexander
ты ж руками в нужный уровень лезешь
Alexander
mtl делает это за тебя через fundeps оттого ограничение
Alexander
ether,m-classes через теги или аналог
Alexander
поэтому там проблемы фундепов нет
Alexander
а так у трансформеров проблема это скорость, если стек глубокий
Alexander
что возможно решает Monad morphism
Vladislav
Как раз скорость у трансформеров это их главное достоинство, потому что компилятор хорошо умеет их оптимизировать. А делать их глубокими просто не нужно, почти все эффекты коммутативны и их можешь объединять
Vladislav
Имеет смысл делать, например, два слоя StateT, если один под ExceptT, а другой над.
Vladislav
А если они оба под, или оба над, то взять и объединить
Alexander
в сравнении с другими решениями - дп
Alexander
но это те решения ещё более медленные
Vladislav
Что ты себе представляешь быстрее?
Vladislav
Это final encoding
Alexander
с морфом быстрее, если выкидывать часть стека которая не нужна
Vladislav
А, ну это да, я не рассматривал альтернативный вариант (таскать ненужную часть стека везде)
Alexander
и.е. скорость этотоверхед, который платится за интерфейс
Alexander
и он получается зависим от глубины стека +- инлайн
Anonymous
Ребят, кто какую IDE пользует под haskell?
кана
Вскод + хаскеро(интеро), юзабельно, но не скажу, что доволен прям всем
Anonymous
Я IDE не использую вообще. Раньше стоял ghc-mod на Atom, но я его отпилил, потому что полусекундная задержка и н перестал работать после какого-то обновления системного GHC
Anonymous
ну а редактор кода какой лучше? Я пробовал notepad++, но как-то не в восторге...
кана
лоол
Konstantin
http://haskell.github.io/haskell-mode/
Зигохистоморфный
vscode + haskell-ide-engine, hfm
Anonymous
а про atom есть отзывы?
Зигохистоморфный
медленный
Anonymous
vscode + haskelly, но юзал только на маленьких проектах
Kirill
idea + haskforce, худо-бедно работает (с комплитом частенько беда)
Viacheslav
Лучше vs code
Vladislav
Вбиваешь vimtutor в терминале и изучаешь единственно верный способ манипуляции текстом
Vladislav
Подсветка синтаксиса для Haskell там есть
Oleg
а про atom есть отзывы?
Atom. Всё хорошо. Запускается дольше, чем vs code, остальное тормозит одинаково и уже не из-за редактора
Ilya
кстати, подсветка хромает
Ilya
по-крайней мере на vim 7.4
Vladislav
> чтобы снизить кол-во обращений к ghci
Все эти Intero и прочие приблуды не работают с проектами хотя бы несколько сотен файлов
Vladislav
Да и GHCi там себя не восторг как показывает
Vladislav
stack build --file-watch и вперед
Зигохистоморфный
stack build —file-watch —fast
Зигохистоморфный
даже
stack build —test —file-watch —fast —pedantic
Vladislav
Ну да.
Зигохистоморфный
--pedantic turns on -Wall -Werror for GHC (all warnings on, and warnings treated as errors)
Vladislav
Я это в .cabal-файле включаю
Anonymous
А есть какой-нибудь -Wall-except-orphan-instances? И вообще, что за история с орфанами, что их так компилятор не любит?
Зигохистоморфный
ну как бы объявление в одном файле, а докручивания всякого в другом как-то не логично
Alexander
OPTIONS_GHC -Wno-warn-orphans
Alexander
в заголовок
Alexander
из него любят т.к. они легко могут привести к коду, который неадекватно ведет себя в runtime
Alexander
если разные инстансы применяются одновременно
Vladislav
https://www.youtube.com/watch?v=hIZxTQP1ifo
Vladislav
^ Почему нужно любить instance coherence