
Leonid
04.06.2018
13:12:09
дарт еще не закрыли же

Yuuri
04.06.2018
14:19:20
Есть ли какие-нибудь общепринятые комбинаторы для "применить функцию к первому/второму элементу пары"? @pl выводит хрень.

Yuriy
04.06.2018
14:20:58

Yuuri
04.06.2018
14:22:36
О, спасибо. Я их сперва нашёл, но не вкурил типы.

Google

A64m
04.06.2018
14:22:40
или Data.Bifunctor

Yuriy
04.06.2018
14:24:59

Andrew
04.06.2018
14:42:51

Yuriy
04.06.2018
14:48:39
и выглядит попроще
когда base поглотит профункторы?

A64m
04.06.2018
14:52:07
таких планов пока вроде нет
про Contravariant правда тоже сначала говорили что не планируется, а потом бах, и переехал

Denis
04.06.2018
15:49:27
хм...
купили-таки GitHub...

ParkeT
04.06.2018
15:50:22
Помянем :(

Mikhail
04.06.2018
15:52:15
Десятки чатов хоронят гитхаб

Google

Mikhail
04.06.2018
15:52:53
В блоге написано, что сделка закроется только под конец года

Евгений
04.06.2018
15:55:31
Растоёбы мигрируют на пиюль?

Pig
04.06.2018
15:58:56
Ещё на пиюнь

A64m
04.06.2018
16:02:09
таким же не останется, но не будет ничего такого, что оправдало бы паническое бегство вот прямо завтра

Yuuri
04.06.2018
16:15:05

Dmitry
04.06.2018
16:15:39
Дети хоронят коня

Denis
04.06.2018
16:16:46
Там лишь хеши и коммиты его

Yuriy
04.06.2018
16:29:13
вы пишете бинарные парсеры на _парсеках? это норм или есть что-то ещё лучше?

Leonid
04.06.2018
16:31:46
почему нет tryModifyMVar ? :(

Aleksey
04.06.2018
16:32:44
Ты ожидаешь эксепшна от этой функции? Чтобы не лочиться?

Leonid
04.06.2018
16:33:31
я ожидаю не ожидать если пустой мвар

Aleksey
04.06.2018
16:34:40
На пустой MVar как должна реагировать эта функция?
Взрываться, вместо лока?
MVar это же не просто переменная, это ещё и примитив синхронизации. А ты, кажется, хочешь поведения IORef

A64m
04.06.2018
16:36:27

Yuriy
04.06.2018
16:40:53
наверное, надо наделать комбинаторов для общих вещей, например, для «размер массива + массив»
больше слоёв абстракции, то есть

Ilya
04.06.2018
17:00:27
это всё есть в cereal
http://hackage.haskell.org/package/cereal-0.5.5.0/docs/Data-Serialize-Get.html#v:getIArrayOf

Google

Denis
04.06.2018
17:02:58
cereal медленный емнип

Anton
04.06.2018
17:03:41
Ещё можно адаптировать store, он немного быстрее attoparsec

Ilya
04.06.2018
17:06:06
поидее там не должно быть медленно

Denis
04.06.2018
17:09:28

Leonid
04.06.2018
17:56:00

Denis
04.06.2018
18:15:59
https://twitter.com/dshevchenko_biz/status/1003700967349669888

Kirill
04.06.2018
18:22:13

Denis
04.06.2018
18:22:37
да, точняк

A64m
04.06.2018
18:33:12
ну все, по крайней мере одна заметная фича в 8.6 будет https://github.com/ghc/ghc/commit/7df589608abb178efd6499ee705ba4eebd0cf0d1
тайплевел пролог больше не пролог (да, теперь каждый день конец эпохи)


Misha
04.06.2018
21:27:47
никак не соображу:
class TraverseIdxs ixs v where
traverseIdx :: v -> TList ixs (Idx v) -> (v -> Idx v i -> STM ()) -> STM ()
instance TraverseIdxs '[] v where
traverseIdx _ _ _ = return ()
instance {-# OVERLAPS #-} (Eq v, Hashable v, TraverseIdxs ixs v) =>
TraverseIdxs (i ': ixs) v where
traverseIdx v (i :-: ix) f = f v i >> traverseIdx v ix f
говорит
Could not deduce: ix ~ i1
from the context: (i : ixs) ~ (ix : ixs1)
bound by a pattern with constructor:
:-: :: forall (f :: * -> *) ix (ixs :: [*]).
f ix -> TList ixs f -> TList (ix : ixs) f,
in an equation for ‘traverseIdx’
то есть надо пройти по самопальному гетерогенному списку и на каждый элемент вычислить f
я понимаю, что дело, видимо, в том, что в сигнатуре
traverseIdx :: v -> TList ixs (Idx v) -> (v -> Idx v i -> STM ()) -> STM ()
i надо как-то по-другому вводить, но не пойму как

Alexander
05.06.2018
05:37:27

Aleksey
05.06.2018
06:12:16
https://mail.haskell.org/pipermail/ghc-commits/2018-June/037453.html
> DerivingVia landed in GHC master

Dmitry
05.06.2018
06:17:31
@astynax Послушал выпуск девзен. Воникло несколько вопросов нубских(на хаскеле не пишу, только играюсь).
Я так понял, что у вас все в голом IO, без монад. Вызовы сторонних либ тоже разворачиваете в IO и обработку ошибок конвертируете в IO (Either Err Res) или бросаете исключения ?
Какие линзы используете?

Aleksey
05.06.2018
06:34:29
Не может быть "все в голом IO, без монад" - IO, это тоже монада.
И нет, у нас далеко не всё в голом IO - в чатике подкаста зря набрасывали.
Но Если код принимает запросы, кладёт что-то в базу, достаёт что-то из базы и отдаёт ответ, то тут в любом случае будет IO

Dmitry
05.06.2018
06:35:40
я не читал чатик, только сейчас послушал подкаст
Ну понятно, просто создалось впечатление, что именно все переводится в ИО монаду

Google

Aleksey
05.06.2018
06:37:22
Ошибки у нас на эксепшнах. Если код в стеке с IO внизу, то IO всё равно тащит с собой исключения, а обрабатывать лучше все ошибки единообразно. Чистый код обычно ошибки кодирует в Except/Either/Maybe - тут как обычно, опять же

Dmitry
05.06.2018
06:37:40
Спасибо, понятно
А линзы какие?

Aleksey
05.06.2018
06:38:14
Линзы - lens.
Используем широко и траверсы всякие и прочую линзоту, поэтому не микролинзы

Dmitry
05.06.2018
06:38:48
Хорошо, просто читал статьи, где их ругают, что они огромные и есть всякие альтернативы

Aleksey
05.06.2018
06:40:03
"Огромные" - спорное утверждение. Да, зависимосей много тащат, но все зависимости - маленькие пакетики. Да и если проект достаточно большой, то куча зависимостей, нужных линзам, и так нажна самому проекту

Dmitry
05.06.2018
06:40:26
Спасибо, у меня такой же вывод был

Aleksey
05.06.2018
06:42:14
Просто IO у нас обычно нет. Потому как у нас в mtl-style всё. Но и MonadIO мало где встречается - на верхнем уровне, разве что. Обычно есть отдельные эффекты типа MonadLogger или MonadPostgres, а это уже не "голое IO" никак :)

Yuriy
05.06.2018
06:58:50
в конечном счёте всё сводится к IO — это нижний слой абстракции, а не выбор разработчика приложения
как работу плотника описывать словами "всё из дерева делает"

A64m
05.06.2018
07:01:07
> DerivingVia landed in GHC master
да вторая заметная языковая фича, других, думаю, в 8.6 уже не будет
https://github.com/ghc/ghc/commit/8ed8b037fee9611b1c4ef49adb6cf50bbd929a27
из неязыковых еще сделали доки в hi файлах https://github.com/ghc/ghc/commit/85309a3cda367425cca727dfa45e5e6c63b47391
непонятно, почему для доков в ghci столько лет ждать пришлось, конечно
17 лет всего-то

Alexander
05.06.2018
07:25:26
кто в итоге на zurihack едет?

Yuriy
05.06.2018
07:25:43
я

Alexander
05.06.2018
07:27:26
\o/ когда приезжаешь?

Yuriy
05.06.2018
07:28:54
7 вечером. на препати на попадаю

Anatolii
05.06.2018
07:38:07

Google

A64m
05.06.2018
07:38:48
ну, формально она прошла через рулевой комитет
> no comments. But two +1 and otherwise silent
agreement. I conclude that we have reached positive consensus.
но также и с deriving via
так что тут скорее дело не в СПЖ, а в размере фичи, когда назначенный комитетчик не ленится что-то прочесть по диагонали и вынести на обсуждение, а остальным обсуждать не хочется
к большим фичам комитету страшно подступать, а по всяким аннотациям типов в ПМ у всех есть мнение и можно обсуждать месяцами

Leonid
05.06.2018
07:52:12
@astynax еще красиво в конце подкаста знанием компьютеров пониже ОС унизил ведущего

Alexander
05.06.2018
07:55:41
а что там было, мне лень слушать?
люблю унижения ведущих

Leonid
05.06.2018
07:56:07
типичный девзен

Alexander
05.06.2018
07:56:42
я слушал девзен 0.1345 раза

Leonid
05.06.2018
07:57:15
Вообще в девзене можно норм слушать гостя, или разговоры про рапределенные бд. Зачем они обсуждают "новости" вообще не понятно, т.к. никто ничего не знает и несут чаще чепуху

Alexander
05.06.2018
07:59:04
так что слушать теперь что-ли?

Leonid
05.06.2018
08:00:27
ну там корочи @astynax объясняет что хаскель не магия, и просто берешь и пишешь. И потом поясняет что не нужно персистентный ram, а нужно железку сунуть на шину и делать dma.

A64m
05.06.2018
08:02:10
> ну там корочи @astynax объясняет что хаскель не магия, и просто берешь и пишешь.
такой выпуск же уже был вроде?

Leonid
05.06.2018
08:02:39
Ну так и @cblp_su уже был с таким же

Yuriy
05.06.2018
08:02:41

Leonid
05.06.2018
08:02:44
Но всё равно не верят

Aleksey
05.06.2018
08:02:46

Leonid
05.06.2018
08:03:46