to post messages and comments.

@rufuse:

Чего-то у меня мозг вытекает уже через уши. Расскажите почему происходит то, что происходит, а?

type family Migratable (rs :: [RevPair]) :: Constraint where
Migratable (rp1 ': '[]) =
( TopLevel (GetSchema (Head (rp1 ': '[])))
, Known (Sing (GetSchema (Head (rp1 ': '[])))) )
Migratable (rp1 ': rp2 ': tl) =
( Known (Sing (GetSchema (Head (rp1 ': rp2 ': tl))))
, MigrateSchema
(GetSchema (Head (Tail (rp1 ': rp2 ': tl))))
(GetSchema (Head (rp1 ': rp2 ': tl)))
, TopLevel (GetSchema (Head (rp1 ': rp2 ': tl)))
, Migratable (Tail (rp1 ': rp2 ': tl)) )

parseAndValidateRevPairs
:: forall proxy rps
. ( Known (Sing (GetSchema (Head rps))), Known (Sing rps), Migratable rps )
=> proxy rps
-> J.Value
-> ParseResult (JsonRepr (GetSchema (Head rps)))
parseAndValidateRevPairs _ v =
let
rss :: Sing rps
rss = known
stv :: Sing (GetSchema (Head rps))
stv = sGetSchema $ sHead rss
stl :: Sing (Tail rps)
stl = sTail rss
in case stl of
SNil -> parseAndValidateJsonBySing stv v
SCons _ SNil -> parseAndValidateJsonBySing stv v
SCons (SCons _) -> migrate <$> parseAndValidateVersionedJsonByVersions stl v

error:
• Could not deduce (MigrateSchema
(GetSchema n0) (GetSchema (Head rps)))
arising from a use of 'migrate'
from the context: (Known (Sing (GetSchema (Head rps))),
Known (Sing rps),
Migratable rps)
bound by the type signature for:
parseAndValidateRevPairs :: (Known (Sing (GetSchema (Head rps))),
Known (Sing rps), Migratable rps) =>
proxy rps
-> Value
-> ParseResult (JsonRepr (GetSchema (Head rps)))
at /Users/dr/workspace/schematic/.stack-work/intero/intero26044q4W.hs:(124,1)-(129,50)
or from: Tail rps ~ (n0 : n1)
bound by a pattern with constructor:
SCons :: forall a0 (z0 :: [a0]) (n0 :: a0) (n1 :: [a0]).
z0 ~ (n0 : n1) =>
Sing n0 -> Sing n1 -> Sing z0,
in a case alternative
at /Users/dr/workspace/schematic/.stack-work/intero/intero26044q4W.hs:141:5-23
or from: n1 ~ (n2 : n3)
bound by a pattern with constructor:
SCons :: forall a0 (z0 :: [a0]) (n0 :: a0) (n1 :: [a0]).
z0 ~ (n0 : n1) =>
Sing n0 -> Sing n1 -> Sing z0,
in a case alternative
at /Users/dr/workspace/schematic/.stack-work/intero/intero26044q4W.hs:141:14-22
• In the first argument of '(<$>)', namely 'migrate'
In the expression:
migrate <$> parseAndValidateVersionedJsonByVersions stl v
In a case alternative:
SCons (SCons _)
-> migrate <$> parseAndValidateVersionedJsonByVersions stl v

@rufuse:

а есть для сабжа нормальные(компилятся из литералов, работают с Text) регулярки, чтобы как hackage.haskell.org но не зависели бы от сишных либ?

@rufuse:

Можно ли на сабже заиметь type-directed search населяющих типы-синглтоны термов как-нибудь? В голову приходит библиотека constraints, т.к. это пруф-серч по сути, но дальше мысль не идет.

@rufuse:

А есть ли какие-то флаги для GHC RTS кроме -H, которые могут повлиять на то, при какой занятости кучи врубается GC? -H поднимает минимальную планку, которая suggest'ится в RTS, а свипы все равно срабатывают на 30% загрузке емнип. Хотелось бы флажок, который бы оверрайдил эти 30%, а не потенциально блоатил кучу.

@rufuse:

Емнип есть часть флажков, которые играют в кабале только для executable таргетов(вроде -threaded). Можно ли где-то список посмотреть/узнать?

@rufuse:

Коллективный разум, помоги отдебажить: тестировал приложение яндекс-танком(нагрузочная тестилка такая), обнаружился странный момент — если дать постоянную нагрузку без "простоев", то приложение в какой-то момент перестает отвечать за разумное время(я в танке жду 60с и это совсем неприемлимо, в нормальном режиме за 10-15 отстреливает), как будто у него внутри локи какие-то, а проц до конца даже и не догружает. GC сейчас гляну(пока компилит), но вообще не очень понятно куда и как копать.

@rufuse:

А какие существуют рекомендации по дефолтному количеству ядер и вообще железу для хаскелльных приложений? Есть приложение, где не получается честно замерить пока что, а рекомендации по железу уже нужны. С ОЗУ там понятно — чем больше, тем лучше, а по количеству ядер ЦПУ капается производительность где?

@rufuse:

А кто что использует для агрегации бизнес-метрик и построения графиков по ним. Сходу на ум приходят kafka как буфер для пулеметных событий и graphite/kibana для метрик. Кто чем пользуется и почему?

@rufuse:

А как можно посчитать кумулятивное количество правок между двумя коммитами? У них разница в два года и меня интересует не статистика по прямому диффу, а именно сумма всех правок. Желательно еще по маске с расширением.

@rufuse:

Нужен шустрый двумерный битовый массив на сабже. Что брать? Нашлось такое сходу — hackage.haskell.org

@rufuse:

twitter.com
поретвитьте/поотзывайтесь чтоли

@rufuse:

Долгое время у меня получалось равнодушно относиться к снойману, но сегодня снова зубами приходится скрипеть. :X

@rufuse:

Разыскивается человек, желающий поадминить на парт-тайме и обучиться nixos.org Баззворды: centOS, nix, zabbix, ansible, haskell, ruby. Писать на d.redozubov эт antorica.com

@rufuse:

Знакомый разыскивает эрлангера-мидла на удаленку. Писать на d.karpov эт iconto.net

@rufuse:

scontent-frt3-1.xx.fbcdn.net

@rufuse:

en.wikipedia.org
значит ли это, что для любой арифметической операции с долларами мне нужно на выходе иметь три знака после запятой(вместо Fixed E2), а для фунта — четыре? В каких случаях это играет — только если делить деньги на что-то? Комиссию в mil'ах не беру.

@rufuse:

stackoverflow.com
неужели я так один думаю?! Остальные способы хуже же :(

@rufuse:

twitter.com Оставлю просто тут, это автор винила, если что.
Теперь у меня эта ссылка под рукой каждый раз будет, на случай если мне еще раз предложат его использовать.

@rufuse:

hackage.haskell.org Эрланго-FFI, сорцы не смотрел, просто тут оставлю пока.

@rufuse:

type family Elem (a :: ) (ls::[]) :: Constraint where
 Elem a '[] = 'False ~ ‘True
 Elem a (a ': list) = ()
 Elem a (b ': list) = Elem a list

ахаха, что же вы делаете, прекратите!