
A64m
10.05.2018
17:02:06
да нормальная полезность

Mink
10.05.2018
17:02:34
@rustem_b, текущий hie собирается как-то так
stack stack-yaml stack-8.2.2.yaml build --copy-compiler-tool

Alexander
10.05.2018
17:02:38
unsafeUninterruptibleMask дополнять если, т.к. там букаф много

Rustem
10.05.2018
17:03:21

Google

Mink
10.05.2018
17:03:50
Это если ghc8.2

Rustem
10.05.2018
17:04:03

Mink
10.05.2018
17:04:59
stack exec ghci где-нибудь, в калоге, где нет stack.yaml

Rustem
10.05.2018
17:05:47
8.2.2

Mink
10.05.2018
17:06:53
Тогда пробуй, ghc больше скачивать не будет

Rustem
10.05.2018
17:06:59
stack --stack-yaml stack-8.2.2.yaml build --copy-compiler-tool?

Mink
10.05.2018
17:07:56
ага

Rustem
10.05.2018
17:08:34
спс
блин
я понял
кароче я не так реп скачал

A64m
10.05.2018
17:15:25
> ой всё, надоело
да, с таким терпением ничего хаскельного не собрать

Google

Rustem
10.05.2018
17:16:41

Leonid
10.05.2018
17:16:43
Хаскель для терпил

Rustem
10.05.2018
17:17:36
GoLang для терпил
я 5 минут ждал пока он мне 5 на 2 поделит

ParkeT
10.05.2018
17:18:03

Rustem
10.05.2018
17:18:29
Рублёвка для рублей

Leonid
10.05.2018
17:19:08
Заводы - рабочим, землю - крестьянам.

Rustem
10.05.2018
17:19:23
А соски?

Alexander
10.05.2018
17:19:29
банкамер модераторам

Rustem
10.05.2018
17:20:08
власть людям, работы ai'

ParkeT
10.05.2018
17:28:26
Damn it, Jamal!
??: - I'm free as well, right guys?
?
?: - Yes you are, Jamal!
?

Rustem
10.05.2018
17:29:18
сложный прикол

ParkeT
10.05.2018
17:29:53
Ну, может у меня чувство юмора никакое, хз.

Ilya
10.05.2018
17:40:18
https://markkarpov.com/post/free-monad-considered-harmful.html
Спасибо, интересный подход. Я так понял, что если от AST требуется только различная интерпретация (например вкл/выкл логи), то достаточно строить AST полиморфное по монаде. А если хочется перестраивать AST, то уже Free.
А MonadWriter, MonadReader — это тоже получается final tagless encoding?

Alexander
10.05.2018
17:40:51
да
если нужно pro-free(r) мнение - пни @graninas он их любит

Александр
10.05.2018
17:44:54
Я их люблю, но до pro мне далеко. Я сейчас сижу и втупливаю, как мне заменить свою Free на Church. Сам-то язык нормально заменился, а вот с интерпретатором беда.

Denis
10.05.2018
17:46:11

Александр
10.05.2018
17:46:40
Если бы я еще понял, что ты сказал...

Ilya
10.05.2018
17:52:44
а я понял, как мне кажется ? если фри монада — это разворачивание (построение) AST, то есть что-то вроде анаморфизма, то логично, что интепретатор, который сворачивает (~ катаморфизм) AST к значению, должен делаться через что-то дуальное — кофри

IC
10.05.2018
18:38:12

Google

Abbath
10.05.2018
18:42:33
Там в раст что-то завезли
Пишут existential type но я не уверен

Ilya
10.05.2018
18:45:04
ниче, скоро в хаскель линейные типы завезут, и посмотрим кто кого

A64m
10.05.2018
18:46:40
насчет скоро я бы особо не расчитывал (да и толку от них не особо много будет)

Leonid
10.05.2018
18:48:04
Мы проверим!

Rustem
10.05.2018
18:48:33

IC
10.05.2018
18:48:44

Ilya
10.05.2018
19:02:11
плохой стиль. старайся, чтобы единственным местом в программе, где есть IO, была функция main

Rustem
10.05.2018
19:02:37

Ilya
10.05.2018
19:03:42

Leonid
10.05.2018
19:09:07
unsafePerformIO

Alexander
10.05.2018
19:38:27

Anatolii
10.05.2018
20:00:40

Alexander
10.05.2018
20:06:15
а никто не помнит статью олега про sql не такую давнюю?

Victor
10.05.2018
20:11:37
http://www.cs.tsukuba.ac.jp/~kam/paper/pepm2016a.pdf

Alexander
10.05.2018
20:12:17
спасибо

kana
10.05.2018
21:34:34
Хочу разобраться во фри монадах на примере алгебры высказываний (not, or, and, термы)
Типа считываем AST, после чего можно его 1) сразу вычислить 2) Перевести в КНФ/ДНФ 3) Как-то ещё оптимизировать
Стек монад наверное будет такой:
1) Free (для AST)
2) Writer (Для подсчёта статистики вычислений до и после оптимизаций)
3) Reader (в AST не только константы, но и переменные могут быть)
Как идея, стоит браться? Какие подводные? С фри монадами знаком только с этого чата + 1 статья с хабра. Ну сложилось впечатление, что это какой-то eval, только done right
типа смотри, с фри подход немного иной (то есть можно делать как ты предлагаешь, но это не так профитно будет)

IC
10.05.2018
21:41:14

Google

Александр
11.05.2018
06:21:29

Vladimir
11.05.2018
06:28:10
Кровавая модерастия удаляет картинки с шуточками? :)

Александр
11.05.2018
06:29:00
Я ничего не удалял еще. От слова совсем.
Видел, как сам автор что-то удалял
Может, другие модераторы работают

Leonid
11.05.2018
06:31:08
Может автор ошибся каналом

Dmitry
11.05.2018
06:33:04
Карман привет передавал

Yuriy
11.05.2018
06:34:37
за употребление оборота «от слова совсем» здесь ещё не банят?

Дед Пегас
11.05.2018
06:35:00

Vladimir
11.05.2018
06:36:17

Oleg
11.05.2018
06:37:08

IC
11.05.2018
06:51:10

Александр
11.05.2018
06:58:10
Именно поэтому из IO и надо по возможности уходить
Вычислительную логику нужно выносить из IO. Можно также кодировать эффекты чистым eDSL и потом его исполнять.
Но поскольку функции IO - это еще и первоклассный объект, то ничего плохого нет в том, чтобы их генерить в чистом коде, чтобы потом выполнить. А еще есть всякие функции по работе с монадой (mapM, replicateM, etc.) Совет от @Masteroid скорее вреден, чем полезен. В достаточно большой программе IO всяко будет не только в функции main.
Правильный совет звучал бы как-то так:
По возможности выносить вычисления в чистые функции, отделять эффекты.

IC
11.05.2018
07:00:03
Только если это не что-то скриптообразное. И то там черепахи до самого низа...


Ilya
11.05.2018
07:00:17
Вычислительную логику нужно выносить из IO. Можно также кодировать эффекты чистым eDSL и потом его исполнять.
Но поскольку функции IO - это еще и первоклассный объект, то ничего плохого нет в том, чтобы их генерить в чистом коде, чтобы потом выполнить. А еще есть всякие функции по работе с монадой (mapM, replicateM, etc.) Совет от @Masteroid скорее вреден, чем полезен. В достаточно большой программе IO всяко будет не только в функции main.
>В достаточно большой программе IO всяко будет не только в функции main.
да это понятно, только ты посмотри, на какой код я отвечал. Человек пришёл из питона, и пишет как в питоне, с функциями String -> String -> IO. Я же сказал - "старайся". Понятно, что это не всегда возможно. Но в его случае не только возможно, но и необходимо.

Александр
11.05.2018
07:00:47

Vladimir
11.05.2018
07:01:37
К сожалению, иногда вынесение из IO стоит слишком дорого.

Александр
11.05.2018
07:02:04
@Masteroid Не вижу такой уж необходимости. Экспериментальный код, захотелось человеку комбинатор сделать, который работает в IO. Стиль по таким кусочкам отслеживать не совсем корректно

Google

IC
11.05.2018
07:02:51

Vladimir
11.05.2018
07:03:18
Ленивый логгинг через monadwriter я так и не осилил, утекал он в память целиком. Проще оказалось в монаду прям io запихнуть.

Alexander
11.05.2018
07:09:28

Vladimir
11.05.2018
07:10:07
Да, узнал это трудным путём.
Пытаясь отделить IO как раз.

Alexander
11.05.2018
07:14:46
на самом деле написать writer через CPS или строгий стейт можно

Александр
11.05.2018
07:22:43

A64m
11.05.2018
07:22:55
тем временем желающих читать пропозал про лин.типы так и не нашлось, так что секретарь рулевого комитета объявил о поиске желающего его прочесть повторно

Alexander
11.05.2018
07:24:17
у меня есть теория, что фримонады стали популярными от желания использовать IO только в мейн

IC
11.05.2018
07:24:17
Линивые типы..

Evgeniy
11.05.2018
07:26:49

Александр
11.05.2018
07:44:39
Напротив, ReaderT паттерн - это IoC в императивном стиле. Работает, но имеет те же самые проблемы.
mtl - стиль тоже из серии "императивный IoC"

A64m
11.05.2018
07:47:18
короче говоря, появились потому, что в хаскеле модулей не было

Александр
11.05.2018
07:47:46
Не знаю.

Alexander
11.05.2018
07:50:29
final tagless это императивщина, так и запишем