Alexander
но бос проигнорил
Alexander
это у боса проблема
Yura
этот PR фиксит
Alexander
да, ПР фиксит
Alexander
в общем хз, хоть форкай
Alexander
или заставлю баса закоммитить
Dmitry
вот вам и продакшн реди
✙glicOne✙
Тут вроде Microsoft Github купил https://github.com/RomaniukVadim/backup-my-github
Aliester
главное чтобы хакадж не купил
Aliester
avoid success at all costs
A64m
когда уже телегу купит и перепишет на WPF для виндовс и электроне для всего остального?
Leonid 🦇
у них уже есть скайп
A64m
не беда, вон у фейсбука два мессенджера и ничего
Leonid 🦇
гугл закрыл больше мессенджеров чем ты использовал
A64m
когда уже гугл Го закроет?
Leonid 🦇
дарт еще не закрыли же
Ю ли я? 🤔
Есть ли какие-нибудь общепринятые комбинаторы для "применить функцию к первому/второму элементу пары"? @pl выводит хрень.
Ю ли я? 🤔
О, спасибо. Я их сперва нашёл, но не вкурил типы.
A64m
или Data.Bifunctor
Cheese
или Data.Bifunctor
действительно, он же теперь в base
Cheese
и выглядит попроще
Cheese
когда base поглотит профункторы?
A64m
таких планов пока вроде нет
A64m
про Contravariant правда тоже сначала говорили что не планируется, а потом бах, и переехал
Denis
хм...
Denis
купили-таки GitHub...
parket
Помянем :(
Anonymous
Anonymous
Десятки чатов хоронят гитхаб
Anonymous
В блоге написано, что сделка закроется только под конец года
Евгений
Растоёбы мигрируют на пиюль?
Кабачок
Ещё на пиюнь
A64m
таким же не останется, но не будет ничего такого, что оправдало бы паническое бегство вот прямо завтра
Dmitry
Дети хоронят коня
Denis
Там лишь хеши и коммиты его
Cheese
вы пишете бинарные парсеры на _парсеках? это норм или есть что-то ещё лучше?
Leonid 🦇
почему нет tryModifyMVar ? :(
Aleksei (astynax)
Ты ожидаешь эксепшна от этой функции? Чтобы не лочиться?
Leonid 🦇
я ожидаю не ожидать если пустой мвар
Aleksei (astynax)
На пустой MVar как должна реагировать эта функция?
Aleksei (astynax)
Взрываться, вместо лока?
Aleksei (astynax)
MVar это же не просто переменная, это ещё и примитив синхронизации. А ты, кажется, хочешь поведения IORef
Cheese
можно на binary еще, если парсер не сложный
у меня сейчас attoparsec с binary для примитивов, но код не самый очевидный получается. не могу понять, почему
Cheese
наверное, надо наделать комбинаторов для общих вещей, например, для «размер массива + массив»
Cheese
больше слоёв абстракции, то есть
Ilya
это всё есть в cereal
Ilya
http://hackage.haskell.org/package/cereal-0.5.5.0/docs/Data-Serialize-Get.html#v:getIArrayOf
Denis
cereal медленный емнип
NC
Ещё можно адаптировать store, он немного быстрее attoparsec
Ilya
cereal медленный емнип
вообще интересно было бы почитать если что-то есть по теме, вроде не гуглится ничего
Ilya
поидее там не должно быть медленно
Denis
вообще интересно было бы почитать если что-то есть по теме, вроде не гуглится ничего
Были у кого-то на гитхабе бенчмарки. Пишу сейчас с утюга, не смогу найти линк.
Leonid 🦇
MVar это же не просто переменная, это ещё и примитив синхронизации. А ты, кажется, хочешь поведения IORef
http://hackage.haskell.org/package/base-4.11.1.0/docs/Control-Concurrent-MVar.html#v:tryTakeMVar Вот такое хочу. Там 5 строк имплементить всего
Denis
https://twitter.com/dshevchenko_biz/status/1003700967349669888
Denis
да, точняк
A64m
ну все, по крайней мере одна заметная фича в 8.6 будет https://github.com/ghc/ghc/commit/7df589608abb178efd6499ee705ba4eebd0cf0d1 тайплевел пролог больше не пролог (да, теперь каждый день конец эпохи)
Misha
никак не соображу: 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 надо как-то по-другому вводить, но не пойму как
Aleksei (astynax)
https://mail.haskell.org/pipermail/ghc-commits/2018-June/037453.html
Aleksei (astynax)
> DerivingVia landed in GHC master
Dmitry
@astynax Послушал выпуск девзен. Воникло несколько вопросов нубских(на хаскеле не пишу, только играюсь). Я так понял, что у вас все в голом IO, без монад. Вызовы сторонних либ тоже разворачиваете в IO и обработку ошибок конвертируете в IO (Either Err Res) или бросаете исключения ? Какие линзы используете?
Aleksei (astynax)
Не может быть "все в голом IO, без монад" - IO, это тоже монада.
Aleksei (astynax)
И нет, у нас далеко не всё в голом IO - в чатике подкаста зря набрасывали.
Aleksei (astynax)
Но Если код принимает запросы, кладёт что-то в базу, достаёт что-то из базы и отдаёт ответ, то тут в любом случае будет IO
Dmitry
я не читал чатик, только сейчас послушал подкаст
Dmitry
Ну понятно, просто создалось впечатление, что именно все переводится в ИО монаду
Aleksei (astynax)
Ошибки у нас на эксепшнах. Если код в стеке с IO внизу, то IO всё равно тащит с собой исключения, а обрабатывать лучше все ошибки единообразно. Чистый код обычно ошибки кодирует в Except/Either/Maybe - тут как обычно, опять же
Dmitry
Спасибо, понятно
Dmitry
А линзы какие?
Aleksei (astynax)
Линзы - lens.
Aleksei (astynax)
Используем широко и траверсы всякие и прочую линзоту, поэтому не микролинзы
Dmitry
Хорошо, просто читал статьи, где их ругают, что они огромные и есть всякие альтернативы
Aleksei (astynax)
"Огромные" - спорное утверждение. Да, зависимосей много тащат, но все зависимости - маленькие пакетики. Да и если проект достаточно большой, то куча зависимостей, нужных линзам, и так нажна самому проекту
Dmitry
Спасибо, у меня такой же вывод был