to post messages and comments.

@agr:

tweag.io

@agr:

Хочу систематизировать лапшу из команд и конфигов:
— для билда (с докером или без) и деплоя (scp/rsync)
— на локальную машину, тестовый стенд и продакшн.

Смотрю в сторону Shake. Как оно в целом? Или что другое посоветуете?

@Renha:

Интересный текст richardhaskell.com
коротко, хардварная имплементация раз в 10 быстрее чем реализация на ЯП, Си как обычно тормозит, FORTH-процессоры это ня, надо зопейлить таковой на своей плисине, можно попробовать уходить в крайности RISC/CISC и посмотреть что — лучше, а что — хуже.

@max630:

reddit.com

prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1133:58 in ghc:Outputable callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in ghc:Outputable pprPanic, called at compiler/prelude/KnownUniques.hs:104:5 in ghc:KnownUniques

Других коллстеков у меня для вас нет

@ndtimofeev:

При попытке вкатить cabal-install обнаружилась острая нехватка различных ебилдов. Пока восполнял её, обнаружил, что у echo в вебне hackage'а указаны одни констрейнты, а в тарболе с кодом — другие.

@trapdoor:

Где бы теперь посмотреть изменения API в base?

@trapdoor:

ghc.haskell.org

Ждём теперь хотя бы в nightly стакане.

@blaze:

Обсуждаем во внутреннем тредике мысль, что не надо в библиотеках совать руки в signal handlers. Совсем не надо, вот даже если очень-очень хочется все равно не надо, потому что никогда не знаешь, кто и как их еще использует, и кто из вас двоих в конце останется без пальцев.
А тег потому что обсуждаем с smarlow, и мне хочется этим похвастаться :)

@killy:

Dear FutureLearner,
You previously registered interest in the course, Functional Programming in Haskell: Supercharge Your Coding.
You can now join the course, which will start on 18 September 2017:
futurelearn.com
The FutureLearn Team

Я уж думал, вот оно... Что-то как-то очень заранее предупредили.

@ndtimofeev:

fpcomplete.com — что укусило Сноймана, что у него пакет разделён на пакет определяющий класс и пакет с сиротками? Это рождение ребёнка так повлияло?

@ndtimofeev:

arxiv.org — всё равно не пойму за каким дьяволом они тащут туда Profunctor и почему им не хватает Functor и Applicative.

@blaze:

или я чего-то не понимаю, или у меня waitProcess забивает болт на threadCancel. С другой стороны, это и логично, он же в wait4 висит и на МДПХ вертел все эти хаскельные рантаймы.

@gbdj:

В продолжение #2877060 youtube.com Короче нормально все в Хаскеле. По другому, но чуть ли не навороченнее. Там есть тупой промежуточный язык с типизованными лямбдами в который после типчекера транслируются все хаскелевые абстрактные навороты. А уже потом когда надоест гонять оптимизатор по кругу можно преобразовать в C, либо еще в какую фигню. stackoverflow.com

@gbdj:

Знаю что есть вполне себе определения парсера и типчекера Haskell в терминах Haskell. Но вот чтоб полностью и рантайм и компилятор определить — вроде бы нет такого. Идея в том что бы не писать ни строчки С-шного кода руками, а генерить его заведомо корректным под конкретную архитектуру. Спрашивается WTF, что помешало ребятам сделать так с самого начала?

@den-po:

Ирония в сторону названия понятна, но если серъёзно — Haskell, например, больше brainfuck чем brainfuck )

@qrilka:

WTF отвечаешь в твиторе dons-у про новость BBC об Архангельске(!)

@segfault:

В exceptions определен ` MonadThrow <hackage.haskell.org> []`

@agr:

jobsquery.it

@blaze:

сравнил Streaming из cassava с ее же Incremental, вызываемом в tail recursive функции, хранящей хвост lazy bytestring в State. Время прожевывания гига данных снижается с 13 секунд до 9, maximum residency с 70Mb до 300Kb. Ну охуеть. А ведь код похож один в один. ЧЯДНТ, библиотеки как-то без оптимизации сумели собраться?

@blaze:

что-то питончик у меня парсит и жует CSV вдвое быстрее хаскеля. Надо профайлить, наверняка где-нибудь налажал.

@blaze:

вот так ненадолго отвлечешься на PHP и уже не можешь сообразить, как execState скрестить с runExceptT

@ndtimofeev:

Мне кажется или Снойман пишет про штангу?

@SannySanoff:

Тот момент когда написано Either, а читаешь Ether

@qnikst:

foreign import ccall unsafe "zmq.h zmq_ctx_term"
c_zmq_ctx_term :: ZMQCtx -> IO CInt


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

After interrupting all blocking calls, zmq_ctx_term() shall block until the following conditions are satisfied:
только не говорите, что кто-то серьезно использует эти байндинги

@max630:

medium.com неужели так неимоверно сложно эту хуйню бежать как-нибудь в интерпретаторе?

@ndtimofeev:

А есть какие-то более другие способы решения проблемы orphan instances на уровне языка или манипуляций с библиотеками в других языках с интерфейсами?

@segfault:

gist.github.com
Как бы мне вот такой псевдокод писать более красиво и композабельно? Можно взять ResourceT вместо Trans, но он при выходе из монады запустит мне `cleanupRes` а мне этого как раз не надо, поскольку я тут не ресурсы выделяю, а делаю serious business штуки, которые хочется безопасно отменить в случае любых фейлов, а если фейлов не было, то не чистить. И желательно в обратном порядке (последнее cleanup action вызвается первым). Ситуация осложняется большой вложенностью вызовов функций и невозможностью в одном месте сделать такое вот дерево из `catchAll`.

@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

@ndtimofeev:

Накидать генератор линз с полиморфными апдейтом на генериках сходу не получилось. Challenge accepted! В нынешнем представление Generic'ов мне категорически нехватает информации о полиморфной составляющей типа. Есть Generic1, но это конечно совсем не то.

@ndtimofeev:

Никак не могу к этому привыкнуть: почему Data.Functor, но Control.Applicative и Control.Monad? Или почему Data.Lens хотя линзы van Laarhoven'а ни разу не data?

@blaze:

а какие у нас общепринятые техники в STM чего-нибудь посчитать-попроверять, и кроме нового state выплюнуть наружу еще и лог "случилось то, случилось се"?

@ndtimofeev:

Про линзы van Laarhoven'а написано много где и довольно хорошо. А вот про призмы как-то невнятно. Мне собственно нужны не они, а partial lens, которые где-то описывались как Choice f => (a -> f b) -> s -> f t. Что бы посмотреть на эту тему?

@ndtimofeev:

Для функтора Const x a определён Applicative (через Monoid x) и не определён Alternative?

@ndtimofeev:

Мальчики Никита и Серёжа пишут приложение. Гуйня на WX, а бэкенд на хаскеле. Вопрос в том как из треда на хаскеле передать сообщение в тред на крестах так, чтобы не 1) блокировать эвентлуп крестофреймворка, 2) полить из крестов MVar 3) unix-сокет.

@qnikst:

/path/blablabla/foobar.hs:332:58: error:
• Couldn't match expected type ‘BlahBlah’ with actual type ‘t’
‘t’ is untouchable
inside the constraints: reply ~ BlahBlah
bound by a pattern with constructor:

а какая ошибка больше всего бесит вас?

@segfault:

pbs.twimg.com
Wow! Not bad ...

@rufuse:

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

@qrilka:

уже GHC 8.2 на носу, а GHCJS всё ещё не может обрести поддержку 8.0.2 со стаком

@rufuse:

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

@ndtimofeev:

А зачем parseJSON завёрнут в Parser от attoparsec? В этом же решительно никакого смысла: Value за тебя уже попарсили и отдают аргументом, ничего полезного внутри монады ты уже сделать не можешь, отстрелить ногу — запросто. Что вообще происходит?