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

@qnikst:

Есть плохая реализация fingerprint. Задача - придумать 2 разных типа, для которых fingerprint будет давать одинаковый результат:

 67 -- | The fingerprint of the typeRep of the argument
 68 fingerprint :: Typeable a => a -> Fingerprint
 69 fingerprint a =
 70     fingerprintFingerprints
 71       $ (fingerprintString $ module_ ++ "|" ++ name_)
 72       : map fingerprint args
 73   where
 74     tr = typeOf a
 75     (tycon, args) = splitTyConApp tr
 76     module_  = tyConModule tycon
 77     name_    = tyConName tycon


я точно знаю:
packageA:Foo.A
packageB:Foo.B

но есть ли что более интересное?

@qnikst:

А у кого есть винда и haskell, нету ли желания помочь и посмотреть на баг:

github.com

а то исать винду и разбираться в её проблемах очень не хочется :(

@dmitriid:

Решение задачи, описанной тут: juick.com было выполнено тут: juick.com

Прекрасные комментарии в коде и описания

@dmitriid:

Стандартная банковкая задача + предыстория + условия. Все тут: juick.com

@solhov:

есть, скажем, 100500 треков. (140 тыщ например)
у каждого есть размер и каждый генерирует некторый трафик (в байтах, за интервал), оный со временем меняется.
надо делать некоторые выборки.
например набрать такие треки, что бы при минальном суммарном объеме они давали максимальный трафик (а — в пике (т.е. "мгновенный" за интервал), б — на интервале средний, в — по минимуму, г — не меньше Q за интервал (опять же в терминах "мгновенного" за интервал, д — еще какой-то вариант)

или максимальный размер так что бы трафик не превышел величину X.

т.е. не следует путать сумму сгенерированых байт, например с часу до двух дня X с собственно функцией скорости генерации оных байт, во всех вопросах интересуют именно эти функции, а не просто сумма.

есть поминутная разбивка.

данных у меня есть за полгода.

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

а особенности такие что то, что хорошо работает скажем на неделе N, на неделе N+10 может уже давать результат не очень.
если давать не все 100500, то все еще смешней будет при переходе к 100500.

@rufuse:

gist.github.com
Почему оно работает по разному и (1) ворнингует? Генерится что-то принципиально разное или баг тайпчекера?

@qnikst:

Кто-нить хочет простенькую спецолимпиадку, задача написать функцию с двумя ветками, одна ветка с эффектами (IO), а другая чистая.

@qnikst:

Забавно, оказывается по результатам всяких постов в жуйке, в ghc репортятся баги: ghc.haskell.org

@qnikst:

Никто спецолимпиадку не хочет?

На этот раз не по ускорению, а по извращению над (с) типами:

groups.google.com

в принципе могу gist выложить, могу даже с моими попытками обойти проблемы.

@dr-Chaos:

Поможем @dmz выразить окамловские функторы над параметризованными модулями на хаскиле? twitter.com

@qnikst:

а с ghc-7.8 stockdb отрабатывает за 2.58 вместо 5.91 на ghc-7.6 (что в 200 раз быстрее той версии про которую Макс говорил, что хацкель тормозит)

@qnikst:

задача написать минимальный пример, где вызывается подзадача, через асинк /forkIO которая не убивается через threadKill (race). Я пока вижу вариант замаскировать исключения и зависнуть или запускать в цикле ффи функцию не аллоцируя ничего. Специфичные для ранийма варианты принимаются

@qnikst:

нужны новые силы для добавления нескольких фич к хакпорту (утилита для создания ебилдов). А именно:
1). прописывание описаний use-flag`ов (и прочей инфы в метадату)
2). прочтение доп инфы из ебилда (типа игнорированя юзфлагов или ch_deps)
3). (опционально) проверка алгоритма генерации зависимостей с учетом юз флагов)

Есть желающие?