@haskellru

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

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

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
или Data.Bifunctor
действительно, он же теперь в base

и выглядит попроще

когда 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
можно на binary еще, если парсер не сложный
у меня сейчас attoparsec с binary для примитивов, но код не самый очевидный получается. не могу понять, почему

наверное, надо наделать комбинаторов для общих вещей, например, для «размер массива + массив»

больше слоёв абстракции, то есть

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
cereal медленный емнип
вообще интересно было бы почитать если что-то есть по теме, вроде не гуглится ничего

поидее там не должно быть медленно

Denis
04.06.2018
17:09:28
вообще интересно было бы почитать если что-то есть по теме, вроде не гуглится ничего
Были у кого-то на гитхабе бенчмарки. Пишу сейчас с утюга, не смогу найти линк.

Leonid
04.06.2018
17:56:00
MVar это же не просто переменная, это ещё и примитив синхронизации. А ты, кажется, хочешь поведения IORef
http://hackage.haskell.org/package/base-4.11.1.0/docs/Control-Concurrent-MVar.html#v:tryTakeMVar Вот такое хочу. Там 5 строк имплементить всего

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

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 надо как-то по-другому вводить, но не пойму как

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 вечером. на препати на попадаю

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
ну там корочи @astynax объясняет что хаскель не магия, и просто берешь и пишешь. И потом поясняет что не нужно персистентный ram, а нужно железку сунуть на шину и делать dma.
У меня пригорело от позиции "ну это же удобно - хоп, и заперсистить кусок RAM, и плевать на то, что это даже теоретически никак не поддерживается ни операционкой, ни железом!"

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