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

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
Haskell programming Можно ли на сабже заиметь type-directed search населяющих типы-синглтоны термов как-нибудь? В голову приходит библиотека constraints, т.к. это пруф-серч по сути, но дальше мысль не идет.
rufuse
Haskell programming А есть ли какие-то флаги для GHC RTS кроме -H, которые могут повлиять на то, при какой занятости кучи врубается GC? -H поднимает минимальную планку, которая suggest'ится в RTS, а свипы все равно срабатывают на 30% загрузке емнип. Хотелось бы флажок, который бы оверрайдил эти 30%, а не потенциально блоатил кучу.
rufuse
Haskell programming Коллективный разум, помоги отдебажить: тестировал приложение яндекс-танком(нагрузочная тестилка такая), обнаружился странный момент — если дать постоянную нагрузку без "простоев", то приложение в какой-то момент перестает отвечать за разумное время(я в танке жду 60с и это совсем неприемлимо, в нормальном режиме за 10-15 отстреливает), как будто у него внутри локи какие-то, а проц до конца даже и не догружает. GC сейчас гляну(пока компилит), но вообще не очень понятно куда и как копать.
rufuse
ghc Haskell programming А какие существуют рекомендации по дефолтному количеству ядер и вообще железу для хаскелльных приложений? Есть приложение, где не получается честно замерить пока что, а рекомендации по железу уже нужны. С ОЗУ там понятно — чем больше, тем лучше, а по количеству ядер ЦПУ капается производительность где?
rufuse
metrics Haskell programming А кто что использует для агрегации бизнес-метрик и построения графиков по ним. Сходу на ум приходят kafka как буфер для пулеметных событий и graphite/kibana для метрик. Кто чем пользуется и почему?
rufuse
Git programming А как можно посчитать кумулятивное количество правок между двумя коммитами? У них разница в два года и меня интересует не статистика по прямому диффу, а именно сумма всех правок. Желательно еще по маске с расширением.
rufuse
Haskell programming Долгое время у меня получалось равнодушно относиться к снойману, но сегодня снова зубами приходится скрипеть. :X
rufuse
work admin job programming Разыскивается человек, желающий поадминить на парт-тайме и обучиться nixos.org Баззворды: centOS, nix, zabbix, ansible, haskell, ruby. Писать на d.redozubov эт antorica.com
rufuse
бухучет Haskell programming en.wikipedia.org
значит ли это, что для любой арифметической операции с долларами мне нужно на выходе иметь три знака после запятой(вместо Fixed E2), а для фунта — четыре? В каких случаях это играет — только если делить деньги на что-то? Комиссию в mil'ах не беру.
rufuse
Haskell programming type family Elem (a :: ) (ls::[]) :: Constraint where
 Elem a '[] = 'False ~ ‘True
 Elem a (a ': list) = ()
 Elem a (b ': list) = Elem a list

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