
? animufag ?
10.12.2017
17:05:01
это чтобы как раньше было на пурсе – порезать ио?
а coerce чтобы обратно к ио возвращаться?

Index
10.12.2017
17:07:23
Это не только порезать, но и в рантайме манипулировать где какая реализация используется.
coerce для того чтоб можно было расширять множество эффектов в рантайме
По сути это вариация на тему ReaderT IO
Например, здесь можно в куске кода подменить логгер

? animufag ?
10.12.2017
17:09:01
ох, ну хоть чуть чуть угадал
то есть в тестах можно заменять интернет запросы на приготовленные ответы?

Google

Index
10.12.2017
17:09:11
Это тоже можно

Aleksey
10.12.2017
17:09:16

Index
10.12.2017
17:09:33
В рантайме можешь решить чем заменять

Aleksey
10.12.2017
17:09:34
или ты имеешь в виду overrideCap?

Index
10.12.2017
17:09:40
Его, да

Aleksey
10.12.2017
17:09:57
Хмм. Вот это неплохо, да

Index
10.12.2017
17:13:35
Вообще эта штука решает проблему когерентности в первую очередь. Если просто словарики таскать, то возможна ситуация, что подменишь логгер, а в других эффектах (бд например) останется старый логгер в замыкании
С этим фреймворком там всегда делается lookup ровно перед использованием (поэтому late bound)
Такой fixed point над ReaderT со словариками
Надо будет это потом еще побенчмаркать и возможно заменить Map на unboxed Vector, тогда даже оверхед будет нормальный.
https://github.com/int-index/caps

melancholiac
10.12.2017
17:58:18
как правильно подружить пулл потоков и древовидно рекурсивные функции?

? animufag ?
10.12.2017
18:09:03
типа сделать подобную ей структуру и распихать TVar из stm.
только не знаю насколько ок рекурсивные tvar

Google

? animufag ?
10.12.2017
18:11:41
хотя в таком случае потоки могут иметь неактуальные tvar
там вообще подразумевается изменение структуры или ты её просто собираешься фолдить эффективно по потокам?


kana
10.12.2017
18:13:33
имея такое
data (a :: * -> *) |> b
class Member (t :: * -> *) r
instance Member t (t |> r)
instance Member t r => Member t (t' |> r)
testReader :: Eff (Reader Int |> Void) Int
testReader = do
x <- ask
y <- ask
pure $ x + y
пишет
• Overlapping instances for Member (Reader Int) (Reader Int |> Void)
arising from a use of ‘ask’
Matching instances:
instance Member t (t |> r)
instance Member t r => Member t (t' |> r)
как это возможно, как они могут оверлапиться вообще?
второй инстанс на Reader Int |> Void невозможен, ведь Reader Int никак не может быть внутри Void, возможен только первый инстанс, откуда оверлапинг
предполагается, что кто-то может сделать Reader Int |> Reader Int |> Void?
думаю, этот тайпкласс вполне реально переписать на семейство
лол, да, на семействах все ок работает
type family t `Elem` ts :: Bool where
_ `Elem` Void = False
t `Elem` (t |> r) = True
t `Elem` (t' |> r) = t `Elem` r
type Member t r = t `Elem` r ~ True
может кто объяснить, в чем разница? Почему на тайпклассах не работает, а на семействах работает?
Полагаю, причина в том же, почему не работает открытый Elem (type family без where), но тоже пока сформулировать четко не могу


A64m
10.12.2017
18:27:42
потому что для закрытых семейств оверлап и так разрешен
где оверлап вроде понятно

Index
10.12.2017
18:29:03
В закрытых clauses по очереди перебираются и оверлап ок, в открытых оверлап приводит к конфликту и фейлу.

kana
10.12.2017
18:31:02
да, это я понял, но где именно оверлап в первом случае? В возможности Reader Int |> Reader Int |> Void?

A64m
10.12.2017
18:31:51
оверлап потому, что в инстанс хэд один и тот же конструктор
а по первому параметру для любого конструктора инстанс

kana
10.12.2017
18:33:32
там не для любого же, в первом и во втором аргументе они должны быть одинаковыми

Index
10.12.2017
18:34:17
t и t' тоже одинаковые заматчат

A64m
10.12.2017
18:34:30
эта одинаковость контекст же, который для разрешения не используется

Index
10.12.2017
18:35:49
Member t (t |> r)
Member t (t' |> r)
Второе строго более общее, чем первое
И оверлаппит

kana
10.12.2017
18:36:16
хм, я понял, спасибо

Google

kana
10.12.2017
18:36:58
я так понимаю, раньше это решение не вызывало ошибку, потому что подобный код есть в первых версиях ext-effects

Index
10.12.2017
18:37:16
Всегда должен был вызывать

A64m
10.12.2017
18:37:19
там оверлап разрешен просто
без включенного оверлапа вообще мало что из такого олегинга работает

kana
10.12.2017
18:37:56
а, нашел, да
{-# LANGUAGE OverlappingInstances #-}

Index
10.12.2017
18:38:03
Если там класс, а не семья типов, то могли быть OverlappingInstances
С семьями типов никак и никогда такое не работало с открытыми

A64m
10.12.2017
18:39:29
ну потому что для классов от оверлапов могут словари перепутаться, а в случае семейств - сегфолт, с чем в хаскеле посильнее борются

Index
10.12.2017
19:08:22
всё так
(по крайней мере SPJ об этом с такого угла говорил)

Vitaly
10.12.2017
19:53:20
Бедный, бедный Taylor Fausak… https://twitter.com/taylorfausak/status/939937217685966848

kana
10.12.2017
19:54:30
в хаскель-комьюнити какая-то санта-барбара

Alexander
10.12.2017
19:54:53
> blocked me on both GitHub and Twitter for no apparent reason.
> no apparent reason
блочить плохо, но какой там к черту no apparent reason
и не говорить, что забанишь и достал и т.п. перед этим

Vitaly
10.12.2017
19:56:37
Ты подписался на него, чтобы поддержать, надеюсь?
Вообще, самое удивительное, что у нас до сих пор один Haskell.
Боюсь, это только влияние SPJ.

Alexander
10.12.2017
19:58:59
нет, я не собираюсь вписываться в их споры, ни на чьей стороне
я подписался, чтобы видеть что пишут и формировать более полное мнение

Google

Vitaly
10.12.2017
19:59:57
I am on nobody's side, because nobody is on my side!

Alexander
10.12.2017
20:00:04
вот что-то такое
мне если честно бомбит со снойманитов
у меня такое ощущение, что ни один из разговоров с ними, где их мнение не принималось полностью не заканчивалось хорошо
там такой my way or the highway что я даже hvr понимаю (хотя и не одобряю бан на гитхабе, это вообще за гранью добра и зла)

Vitaly
10.12.2017
20:02:09
Да, я в общем согласен.

Alexander
10.12.2017
20:02:18
даже, ок, я вижу что вы говорите и тут вы правы, мы готовы поменять, воспринимается как "о, вы же видите что мы правы во всем, и теперь делайте как надо"
они по очереди создают баги во всех проектах, реддите и прочем до конца
причем в твиттерах ещё идёт их пассивно-агрессивный стиль, или как это зовется
с одной стороны и не ругают и все выглядит корректно, с другой ужасный blaming

Admin
ERROR: S client not available

Alexander
10.12.2017
20:03:38
и им так можно
а если что-то против, то все CoC, вызов SPJ и т.п.
выговорился

Vitaly
10.12.2017
20:04:23
Спасибо!

Alexander
10.12.2017
20:05:01
SPJ жалко :)
ладно, а теперь пора спать, а то опять в интернетах все правы, а я читать за ними не успеваю

Vitaly
10.12.2017
20:06:28
Я не думаю, что он особенно страдает по этому поводу

Alexander
10.12.2017
20:07:54
надеюсь, до него этот ад особо не доходит

A64m
10.12.2017
20:12:55

Google

Vitaly
10.12.2017
20:14:08
Это вы про что? Так-то по ходу много возникало, но всё отваливалось быстро

A64m
10.12.2017
20:14:58
про eta

Denis
10.12.2017
20:17:18

melancholiac
10.12.2017
20:19:14
почему diffClockTimes дает отрицательное значение пикосекунд?

A64m
10.12.2017
20:19:48
поскольку хаскель это, фактически ghc где-то с конца 90-х, то вторым хаскелем можно называть только гхц-форк, а все прочее это так, хаскелеподобные языки, которые иной раз пытаются быть хаскелем

Vitaly
10.12.2017
20:20:08
Да, всё так

A64m
10.12.2017
20:21:21
если сделать из гофера хаскель практически получилось, но он через несколько лет после того и закончился, то у следующей пары попыток особо ничего не вышло

Pig
10.12.2017
20:35:42

melancholiac
10.12.2017
20:35:55

Pig
10.12.2017
20:36:18
Потому что есть знак

melancholiac
10.12.2017
20:36:46
:/

Leonid
10.12.2017
20:47:54
https://www.reddit.com/r/haskell/comments/7is4m5/what_popular_databases_are_written_in_haskell/
https://www.reddit.com/r/haskell/comments/7iumzb/haskell_mutable_collections_low_performance_vs/
ну что за день
Ну и всем радоваться, у hie есть логотип....

A64m
10.12.2017
20:52:33
радости немного мешает льющаяся из глаз кровь
очень смешно, конечно, но с другой стороны как писать такой код на хаскеле никто особо не учит
https://i.imgur.com/xmbQH51.png

Denis
10.12.2017
20:54:41

? animufag ?
10.12.2017
20:55:14
три буквы для названий. как-то щедро

Denis
10.12.2017
20:57:06
https://www.dcc.fc.up.pt/~pbv/aulas/tapf/slides/stmonad.html

A64m
10.12.2017
20:57:12
задепрекейтили бы array уже

? animufag ?
10.12.2017
20:57:42
зачем` _ <- `?

Denis
10.12.2017
20:57:50

A64m
10.12.2017
20:57:58
да