@haskellru

Страница 1227 из 1551
Stepan
27.05.2018
08:56:08
и вот ещё один спросил и убежал
Твори добро, и бросай его в воду. (С)

Yuriy
27.05.2018
10:22:33
ту в которой будет лежать executable
$(stack path --local-install-root)/bin

или билд артефакты от текущего билда
смотря какие. запусти stack path и проверь

Alexander
27.05.2018
10:23:11
это же не то, про что я спрашивал?

Google
Alexander
27.05.2018
10:23:39
мне нужно .stack-work/build/ghc-.../cabal-../dist/...

Yuriy
27.05.2018
10:23:55
это же не то, про что я спрашивал?
если ты спрашивал про кабал, то я подмигивающий смайлик поставил

Alexander
27.05.2018
10:24:24
я спрашивал про стек

Yuriy
27.05.2018
10:24:45
$ stack path --dist-dir .stack-work/dist/x86_64-osx/Cabal-2.0.1.0

Alexander
27.05.2018
10:24:46
и про то как в нем получить путь до билд директории, т.к. разговор был о билд директории

во, это что надо

Yuriy
27.05.2018
10:25:51
я не знаю, что такое билд-директория. там разные артефакты и временные файлы в разные кладутся. а текущая во время сборки — это директория исходников

Alexander
27.05.2018
10:27:56
в общем это единственное место где можно непопорченные исполняемые файлы взять

и иногда до них нужен доступ из тестов и т.п.

чтобы не делать в 2 гюшага тесты

Yuriy
27.05.2018
10:33:18
нестрипаные бинарники? да, ${путь к каталогу пакета}/$(stack path --dist-dir)/build/${имя пакета}/${имя программы}

кажется, единственное решение

Alexander
27.05.2018
10:58:50
ага, ну или кабалом пользоваться, но в кабале пока нету нативного варианта как достать путь

Google
Ilya
27.05.2018
23:14:30
если у меня есть монада сложенная из StateT + ReaderT в библиотеке и я хочу дать возможность пользовательскому коду мою монаду заворачивать StateT, ReaderT, etc то мне надо надо заворачивать свою монадку в newtype, создавать LibMonad тайпкласс и делать пачку инстансов для трансформера или можно как-то проще всё сделать?

я понимаю что мне тут хочется какие-то labelled effects, но не совсем понимаю как сейчас это в хаскеле модно делать

Dmitry
28.05.2018
01:18:54
@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
28.05.2018
04:41:09
почитал про Three Layers статейку (http://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html) и что то не особо понял их идеалогию в плане второго уровня. Для начала я не понял как они предлагают комбинировать там разные классы, не через объявление же инстанса зависящего и от того и от того? И что тогда там под капотом, final tagless? И вообще, зачем все это делается? В 2018 году все вроде перешли с unit tests на behaviour tests и мокать, например, базу данных это уже мовентон, тем более что в типичном веб-приложении, например, большая часть тестов приходится как раз на sql-логику. Собстенно, обычно мокаются только сетевые запросы (как сука долгие) и это как раз делается без заморочек с сужением ответсвенности

ну то есть нарезание эндпоинта на мелкие кирпичики это в сущности та же лапша же

Dmitry
28.05.2018
07:18:01
@cblp_su К сожалению, ether нельзя использовать для введения большого числа эффектов. Согласно словам @int_index, GHC недостаточно умный в одном месте, из-за чего использование either приводит к (неточная цитата): "Экспонециальному от числа эффекта времени и памяти компиляции".

Aleksey
28.05.2018
08:35:27
Всё же нужно довольно сильно наэфирить, чтобы эффект перестал "стоить того". Если не слишком много ридеров рядом находится, то жить можно.

Denis
28.05.2018
08:37:39
Омагад, вот это фэйл
обычная история с тайплевелом всяким

Евгений
28.05.2018
08:38:30
Нужны кайнд-левел доказательства полиномиальности тайп-левела

Alexander
28.05.2018
08:38:53
там проблемы если пытаться быть слишком умным и оптимизировать стек

IC
28.05.2018
08:39:22
К 8.6 не починят?

Alexander
28.05.2018
08:39:55
маловероятно что починят, и.к. это фича дающая много плюсов а нормальном случае

а ether не нормальный

IC
28.05.2018
08:40:31
Экспоненциальное время компиляции - фича?

Ну вообще да, чтобы писали уже продакшн и не выпендривались.

Alexander
28.05.2018
08:41:09
фича это генерация специализаций для инстансов

а экспоненуиальное время это абьюз фич гхц библиотекой

там в принципе есть что улучшать в гхц

Google
Alexander
28.05.2018
08:45:36
или придумать как поиск и компрессию стека сделать линейной по сложности

или как сказать гхц не генерить специализации

о, я @bravit111 но ретвиту на комментрарий обогнал

Denis
28.05.2018
09:29:06
и меня обогнал, по написанному

Vitaly
28.05.2018
09:29:07
Так это я и ретвитил!

Мне, кстати, понравилась прошлая неделя

Denis
28.05.2018
09:30:17
и кстати, никаких громких холиваров никто не развёл

это радует

Denis
28.05.2018
14:25:56
@astynax страничка про редакторы как бы всегда была) https://github.com/rainbyte/haskell-ide-chart

Yuriy
28.05.2018
14:49:56
у всех Syntax highlight = The best™ possible experience. врут же!

никто не подсвечивает нормально сигнатуры вида ffff :: t

Aleksey
28.05.2018
14:50:46
Дед Пегас
28.05.2018
14:50:57
у всех Syntax highlight = The best™ possible experience. врут же!
Просто всё остальное совсем плохо, так что подсветка ок.

Yura
28.05.2018
14:51:12
стоит ли отказываться от Стокгольмского синдрома и бросать vim

Aleksey
28.05.2018
14:51:59
(/me не может соскочить с Emacs)

Yura
28.05.2018
14:52:03
жизнь ли это?

нужна ли она мне, когда я давно уже мертв изнутри?

вообще остальные редакторы тоже через ghc-mod работают?

Google
Aleksey
28.05.2018
14:54:05
it depends

Yura
28.05.2018
14:54:05
потому что если - да, то абсолютно пофигу

Aleksey
28.05.2018
14:54:43
Emacs может использовать ghc-mod, а может и не использовать. Можно использовать HIE, intero и другие варианты

Yura
28.05.2018
14:54:49
все те же пляски начнутся, версия либ посвежее и ghc-mod не собирается

у вас cabal не той системы

Yuriy
28.05.2018
14:58:52
бэкенды, насколько мне известно, такие: 1. ghc-mod сам по себе не развивается 2. HIE, инкорпорировавший ghc-mod 3. intero 4. hsdev 5. ghcid?

у Leksah, наверно, что-то своё, но редактор 1 языка никому не нужен

Admin


Leonid
28.05.2018
15:02:18
на всё готовы, лишь бы не емакс

/me использует haskell-mode и cabal new -repl

Yura
28.05.2018
15:02:50
спасибо @cblp_su

Евгений
28.05.2018
15:03:18
Лексах мёртв

Yura
28.05.2018
15:03:34
да я тоже использую haskell-mode

Евгений
28.05.2018
15:03:43
Но мне кажется, что редактор одного языка не такая уж и плохая идея, вот idea изначально была такой

Yura
28.05.2018
15:03:52
но cabal не той системы меня убивает

Yuriy
28.05.2018
15:04:43
давайте ещё yi помянем

Евгений
28.05.2018
15:05:25
yi нерабочий ж всегда был, в отличии от лексах

Алексей Ayaye :)
28.05.2018
15:27:00
@astynax страничка про редакторы как бы всегда была) https://github.com/rainbyte/haskell-ide-chart
ну, в какую сторону копать - понять можно, я на неё сморел. но за руку не берет и за собой не тащит

A64m
28.05.2018
16:08:15
вообще остальные редакторы тоже через ghc-mod работают?
те что используют гхц-мод или интеро без всяких хитростей типа кеширования работают только на хеллоуворлдах

Google
Yura
28.05.2018
16:29:49
Ну они долго работают

Пара секунд лага

Быстрее чем билд

Ilya
28.05.2018
16:52:04
начал переписывать тайпалиас на ньютайп + LibMonad тайпкласс и вылезла интересная проблема https://gist.github.com/SPY/ff745898629800f967949cd14ead1ed5

раньше во вспомогательных тайпклассах я использовал конкретный тайпнейм и по этому тайпчекер всё понимал, но теперь когда всё ушло в констрейнты type OutType перестал чекаться, потому что для монадного инстанса он слишком общий

это как-то можно победить? какой-нибудь волшебный экстеншен который позволит констренты в дефинишен типа например добавить или ещё что-то такое

выглядит так, что мне нужно что-то типа этого https://ghc.haskell.org/trac/ghc/ticket/4259

Dmitry
28.05.2018
17:40:41
m (Proxy t) перекрывается с Loc t. Надо как-то их разделять. У t кайнд Type в обоих случаях? Нельзя какой-нибудь специальный кайнд завести?

Можно еще добавить в класс параметр (isLoc :: Bool). И различать по 'True или 'False (скорее всего - вспомогательный класс сделать).

Alexander
28.05.2018
17:51:48
Но мне кажется, что редактор одного языка не такая уж и плохая идея, вот idea изначально была такой
если редактор одного языка не может подсветить конфиги то се очень плохо

хотя кому и Applicative конфиг

Ilya
28.05.2018
18:01:09
Можно еще добавить в класс параметр (isLoc :: Bool). И различать по 'True или 'False (скорее всего - вспомогательный класс сделать).
это всё перекрывается тем, что GHC не чекает констрейнты, по этому даже вспомогательный класс если его запихнуть в констрейнты не поможет

пытаюсь запилить на мультипарам тайпклассах, но пока что-то тяжко идет

Dmitry
28.05.2018
18:04:27
Вспомогательный класс с доп. параметром с кайндом Bool.

А у тебя еще будут инстансы или только два? А то можно закрытую type family использовать. Там ничего не перекроется.

Ilya
28.05.2018
18:09:46
я вынес в закрытую тайпфемили, но там всё ещё сложнее оказалось ?

Dmitry
28.05.2018
18:10:21
Почему?

Ilya
28.05.2018
18:10:52
там не очевидно что FunGenMonad m из констрейнта для produce мапится на FunGenMonad m из заголовка инстанса

и получается что бы их унифицировать всё равно надо выносить это на уровень тайпкласса

хотя загнался, это другая проблема

ща вспомню почему не работала закрытая тайпфемили

Страница 1227 из 1551