IC
ну может там binary blob в ответе
Binary не сильно отличается от того же aeson
Sr
и вот ещё один спросил и убежал
Твори добро, и бросай его в воду. (С)
Cheese
Cheese
или билд артефакты от текущего билда
смотря какие. запусти stack path и проверь
Alexander
это же не то, про что я спрашивал?
Alexander
мне нужно .stack-work/build/ghc-.../cabal-../dist/...
Cheese
это же не то, про что я спрашивал?
если ты спрашивал про кабал, то я подмигивающий смайлик поставил
Alexander
я спрашивал про стек
Cheese
$ stack path --dist-dir .stack-work/dist/x86_64-osx/Cabal-2.0.1.0
Alexander
и про то как в нем получить путь до билд директории, т.к. разговор был о билд директории
Alexander
во, это что надо
Cheese
я не знаю, что такое билд-директория. там разные артефакты и временные файлы в разные кладутся. а текущая во время сборки — это директория исходников
Alexander
в общем это единственное место где можно непопорченные исполняемые файлы взять
Alexander
и иногда до них нужен доступ из тестов и т.п.
Alexander
чтобы не делать в 2 гюшага тесты
Cheese
нестрипаные бинарники? да, ${путь к каталогу пакета}/$(stack path --dist-dir)/build/${имя пакета}/${имя программы}
Cheese
кажется, единственное решение
Alexander
ага, ну или кабалом пользоваться, но в кабале пока нету нативного варианта как достать путь
Ilya
если у меня есть монада сложенная из StateT + ReaderT в библиотеке и я хочу дать возможность пользовательскому коду мою монаду заворачивать StateT, ReaderT, etc то мне надо надо заворачивать свою монадку в newtype, создавать LibMonad тайпкласс и делать пачку инстансов для трансформера или можно как-то проще всё сделать?
Ilya
я понимаю что мне тут хочется какие-то labelled effects, но не совсем понимаю как сейчас это в хаскеле модно делать
Dmitrii
@irezvov Это корректный подход. Если хочется иметь возможность заворачивать свою монаду в ReadeT и StateT или ReaderT и StateT в свою монаду, то свою монаду делают как newtype и не реализовывают для нее инстансы MonadReader и MonadState. Но обычно так не хочется. Как по мне, то сырые Reader и State подходят для каких-то небольших и локальных вычислений. Например, написать одну чистую функцию, которую через State намного проще, чем вручную через передачу аргументов. А для большой архитектуры неплохо использовать Three Layers подход (это довольно модный сейчас подход, но он не использует много фич системы типов). Вообще, labeled effects сделать можно в Haskell, если очень хочется. В этом видео как раз есть пример этого. Так что можно как в Idris писать, если очень хочется. https://www.youtube.com/watch?v=soKl1IslU-I
Alexander
почитал про Three Layers статейку (http://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html) и что то не особо понял их идеалогию в плане второго уровня. Для начала я не понял как они предлагают комбинировать там разные классы, не через объявление же инстанса зависящего и от того и от того? И что тогда там под капотом, final tagless? И вообще, зачем все это делается? В 2018 году все вроде перешли с unit tests на behaviour tests и мокать, например, базу данных это уже мовентон, тем более что в типичном веб-приложении, например, большая часть тестов приходится как раз на sql-логику. Собстенно, обычно мокаются только сетевые запросы (как сука долгие) и это как раз делается без заморочек с сужением ответсвенности
Alexander
ну то есть нарезание эндпоинта на мелкие кирпичики это в сущности та же лапша же
Dmitrii
@cblp_su К сожалению, ether нельзя использовать для введения большого числа эффектов. Согласно словам @int_index, GHC недостаточно умный в одном месте, из-за чего использование ether приводит к (неточная цитата): "Экспонециальному от числа эффектов времени и памяти компиляции".
Aleksei (astynax)
Всё же нужно довольно сильно наэфирить, чтобы эффект перестал "стоить того". Если не слишком много ридеров рядом находится, то жить можно.
Denis
Омагад, вот это фэйл
обычная история с тайплевелом всяким
Евгений
Нужны кайнд-левел доказательства полиномиальности тайп-левела
Alexander
там проблемы если пытаться быть слишком умным и оптимизировать стек
IC
К 8.6 не починят?
Alexander
маловероятно что починят, и.к. это фича дающая много плюсов а нормальном случае
Alexander
а ether не нормальный
IC
Экспоненциальное время компиляции - фича?
IC
Ну вообще да, чтобы писали уже продакшн и не выпендривались.
Alexander
фича это генерация специализаций для инстансов
Alexander
а экспоненуиальное время это абьюз фич гхц библиотекой
Alexander
там в принципе есть что улучшать в гхц
Alexander
или придумать как поиск и компрессию стека сделать линейной по сложности
Alexander
или как сказать гхц не генерить специализации
Alexander
о, я @bravit111 но ретвиту на комментрарий обогнал
Denis
и меня обогнал, по написанному
Vitaly
Так это я и ретвитил!
Vitaly
Мне, кстати, понравилась прошлая неделя
Denis
и кстати, никаких громких холиваров никто не развёл
Denis
это радует
Зигохистоморфный
@astynax страничка про редакторы как бы всегда была) https://github.com/rainbyte/haskell-ide-chart
Cheese
у всех Syntax highlight = The best™ possible experience. врут же!
Cheese
никто не подсвечивает нормально сигнатуры вида ffff :: t
Крылатый
у всех Syntax highlight = The best™ possible experience. врут же!
Просто всё остальное совсем плохо, так что подсветка ок.
Yura
стоит ли отказываться от Стокгольмского синдрома и бросать vim
Aleksei (astynax)
(/me не может соскочить с Emacs)
Yura
жизнь ли это?
Yura
нужна ли она мне, когда я давно уже мертв изнутри?
Yura
вообще остальные редакторы тоже через ghc-mod работают?
Aleksei (astynax)
it depends
Yura
потому что если - да, то абсолютно пофигу
Aleksei (astynax)
Emacs может использовать ghc-mod, а может и не использовать. Можно использовать HIE, intero и другие варианты
Yura
все те же пляски начнутся, версия либ посвежее и ghc-mod не собирается
Yura
у вас cabal не той системы
Cheese
бэкенды, насколько мне известно, такие: 1. ghc-mod сам по себе не развивается 2. HIE, инкорпорировавший ghc-mod 3. intero 4. hsdev 5. ghcid?
Cheese
у Leksah, наверно, что-то своё, но редактор 1 языка никому не нужен
Leonid 🦇
на всё готовы, лишь бы не емакс
Leonid 🦇
/me использует haskell-mode и cabal new -repl
Yura
спасибо @cblp_su
Евгений
Лексах мёртв
Yura
да я тоже использую haskell-mode
Евгений
Но мне кажется, что редактор одного языка не такая уж и плохая идея, вот idea изначально была такой
Yura
но cabal не той системы меня убивает
Cheese
давайте ещё yi помянем
Евгений
yi нерабочий ж всегда был, в отличии от лексах
Алексей ayaye :)
@astynax страничка про редакторы как бы всегда была) https://github.com/rainbyte/haskell-ide-chart
ну, в какую сторону копать - понять можно, я на неё сморел. но за руку не берет и за собой не тащит
A64m
вообще остальные редакторы тоже через ghc-mod работают?
те что используют гхц-мод или интеро без всяких хитростей типа кеширования работают только на хеллоуворлдах
Yura
Ну они долго работают
Yura
Пара секунд лага
Yura
Быстрее чем билд