Чтобы добавлять сообщения и комментарии, .

@ndtimofeev:
ndtimofeev

Пытаюсь уговорить себя не делать logger nullary type class'ом. Получается с трудом.

@max630:
max630

а помните был текст про Arrow где тип был что-то вроде A a = A ([Path], IO a), и они заранее собирали все затронутые пути? Не поможете ссылку найти?

@ndtimofeev:
ndtimofeev

Есть планировщик шины представленный клиентам обёрткой вокруг Async'а и TQueue с тасками. Конструктор обёртки в IO запускает тред в котором крутится планировщик, который работает тоже внутри IO. Теперь я хочу заменить IO на (MonadIO m, MonadMask m, MonadLogger m) => m и не могу придумать как пропихнуть сферическую монаду в вакууме в форк.

@qnikst:
qnikst

офигеть, simonmar не зарезал мой патч! картинка_с_плящущим_негром.apng

@qnikst:
qnikst

у меня есть:

data Scope = forall a . Serialise a => Scope String (Proxy# a)

есть:

scope :: StaticPtr Scope -> ....

хочу:

scope :: StaticPtr Scope -> a -> ...

и вот этот a должен быть связан с тем. что в Scope, при этом добавить типа-параметр для Scope a нельзя. Это вообще реально?

@blaze:
blaze

а кто-нибудь освоил stack hoogle? Если я его инициализирую через stack hoogle --setup, то он не видит пакетов из base. А если запустить stack hoogle generate, то он выкачивает весь hackage и всё видит, только вот ссылки ведут не на локальную копию, а в интернет.

@blaze:
blaze

basic-prelude или classy-prelude?

@ndtimofeev:
ndtimofeev

Зачем-то пару месяцев назад написал логгер для программы в который в качестве записей передаются не сериализованные структуры. Сейчас не могу вспомнить зачем мне это было нужно.

@qnikst:
qnikst

какие похожие программы и какие разные результаты.

* paste.pound-python.org
* paste.pound-python.org

опять лезть в RTS :/

@blaze:
blaze

Если 8.0.2 RC1 только что анонсировали на reddit, то что я тогда накатил из hvr две недели назад?

@qrilka:
qrilka

реддит рефлекса начинает выглядеть будто мой бложик, блин — reddit.com

@qnikst:
qnikst

А погуглите за меня, можно ли докопаться до ThreadId#, является ли он указателем, и не будет ли он перемещен GC?

@qnikst:
qnikst

Хочу писать бинарный лог в файл. При этом в лог пишут несколько капабилитей. В общем такой eventlog, но в userspace. Не хочу лишний раз блокировать rts-ку, кого позвать чтобы сделать аккуратно?

@qnikst:
qnikst

А какой самый быстрый способ monotonic/real-time clock получить? Вариант с FFI, наверное, даже принимается.

@qnikst:
qnikst

Мне нужно сделать какой-то аналог указателя на статическую область памяти, где лежит стуктурка с описанием нужной фигни. StableNames и указатель на него подойдет?

@ndtimofeev:
ndtimofeev

Что мне грозит за попытку хранить в узлах ADT значения не того boxed типа скастованного к нужному boxed типу при помощи unsafeCoerce? Кроме презрения товарищей?

@segfault:
segfault

А ни кто не видел удобных приблуд для рефакторинга? Я то я на столько охуел, что хочу не только чтобы компилятор за меня ошибки все ловил, но и чтобы редактор за меня модули перемещал, создавал например, сам правил импорты во всех зависимых модулях и вот это всё. Аналогичное для переименования функций, типов данных, конструкторов, полей (а если ещё и линз, то будет просто пушка). Реквестирую, короче.

@ndtimofeev:
ndtimofeev

У меня тут регионопроблемы. Пусть у меня есть функции вида:

doWith :: Shit res -> (forall s. res s -> Reg s ()) -> IO ()

traverseRes :: (Generic (res s), Magic (Rep (res s))) => res s -> Reg s ()

По отдельности всё хорошо, но если сделать что-то вроде:

\hnd -> doWith hnd traverseRes

Незамедлительно наступает ад, поскольку функции очень нужен констрейнт от traverseRes, но s уже стёрто и задать его никак нельзя. Собственно два вопроса: можно ли как-то убедить компилятор что констрейнты справедливы для любого s и как с этим борются при использовании регионов здорового человека?

@blaze:
blaze

а бананы и линзы так из летнего отпуска и не вернулись?

@qnikst:
qnikst

А H^HTypeable уже все видели? typeable.io
CC @rufuse

@max630:
max630

оказывается Data.Text внутри хранит utf-16 строку, и при всех операциях которые требуют собственно доступа к отдельным "символам" его на лету перекодирует.

@qnikst:
qnikst

mail.haskell.org !!!!!!

@qnikst:
qnikst

у меня есть что-то типа:

foo bootstrap run teardown = bootstrap >>= куча-логики (run `finally` teardown)

юзер передает bootstrap, run, teardown и при этом ресурсы выделяются функций вида withFoo её как-т можно в такую логику запихнуть?

@qnikst:
qnikst

а можно как-то снять маскировку исключений если не передали release фунцию?

@max630:
max630

а были какие-то альтернативы hoogle, которые лучше ищут? вот буквально месяц назад видел ссылался кто-то, а найти не могу

@ndtimofeev:
ndtimofeev

Охуительно. GHC в какой-то момент просто перестал линковать инстанс в динамическую библиотеку. Такое ощущение что он просто решил вынести его целиком в файл интерфейса, а потом забыл это сделать. Причём на другой машине тот же GHC работал нормально. 4 часа удаления сандбоксов, .cabal, .ghc, неба и аллаха, обновления cabal'а… Всё в пустую. Пофикшено изменением внешнего интерфейса модуля (тупо добавил функцию, которая ничего не делает, но экспортируется). Доброй всем ночи.

@qnikst:
qnikst

1. делаем catch-all обработчик исключений перезапускающий процесс
2. у нас не выходит по ^C, делаем обработчик сигнала ловящий sigINT завершающий работу и потом отправляющий sigTERM

получаем программу у которой ни получить ни runtime статистиу, ни eventlog, не надо так..

@ndtimofeev:
ndtimofeev

Можно как-то попросить cabal repl подгружать статические версии библиотек из sandbox'а?

@max630:
max630

какая-то паскуда буферизует Char8.putStrLn до конца программы. Не могу понять кто. В ghci вроде нормально

@max630:
max630

а это, кросплатформенный sleep есть?

@rufuse:
rufuse

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

@qnikst:
qnikst

Tot time (elapsed) Avg pause Max pause
Gen 0 0 colls, 0 par 0.000s 0.000s 0.0000s 0.0000s
Gen 1 100 colls, 99 par 1.532s 0.801s 0.0080s 0.0576s

как таке может быть?

@ndtimofeev:
ndtimofeev

А можно как-то в ghci импортировать часть символов из модуля? А то попытка использовать совместно Data.List и Data.List.NonEmpty делает меня грустным.

@segfault:
segfault

А есть у нас hashable но на чистоам хаскеле, без С?

@ndtimofeev:
ndtimofeev

В догонку к #2852988. То ощущение что я хочу анонимные типы. То есть типофункция кейз которой определён как конструктор, а другой как вычисление.

@ndtimofeev:
ndtimofeev

Проебал ночь машинного времени потому что запустил программу в тестовом режиме. Как бы мне сделать :set prompt в ghci-скрипте на основание значения let-биндинга из того же скрипта?

@ndtimofeev:
ndtimofeev

Были у меня красивые типы-устройства параметризованные фантомным параметром прибивающим их к регион-подобной монаде. Внутри были СВОЙСТВА (Property) — волшебные переменные (парметризованные кучей параметров главным обрзом типами f и a, где a тип значения который присваивается переменной, f a — тип произвольного состояния в котором может находится аспект устройства связанный со свойством) операции над которыми потокобезопасно отражались на хардварной перефирии, также прибитые к региону. Это в принципе работает хорошо, но охренительно неудобно. Ну то есть если обойти все свойства устройства можно при помощи Generic, но куда их деть кроме как собрать в какой-то гомогенизированный список? Тогда густо обмазавшись магией функций на типах я родил следующий концепт: устройства парметризованы ещё одним фантомным параметром, который определяет значение данного типа либо как runtime-представление устройства (если параметр равен Runtime), либо как просто коллекцию значений (если он Info p). Вместо Property мы везде лепим типофункцию, которая на основе параметра представления либо возвращает Property, либо p с которым пришёл Info (кайнд у p и Property — одинаковый). Теперь в принципе из региона можно возвращать коллекцию значений соответствующих свойствам устройства. И всё было бы хорошо, но… я не могу придумать имя для типофункции. Более того мне кажется что СВОЙСТВО это скорее более общий вариант, то есть это она Property, а чем является в таком случае Runtime-переменная я теряюсь сказать. Ну и ещё один вопрос меня терзает: фантомный параметр, которым мы прибиваем представления устройств к региону просто совершенно не нужен Info версии того же типа. Возникает нездоровое желание просто переиспользовать его для разных кейзов, но я пока не придумал как и что я при этом отстрелю себе в плане регионов.

@qnikst:
qnikst

next = join $ mask_ (atomicallyModifyIORef' (.... -> (..., (f `onException` end) >> next)

и сюда прилетает асинхронное исключение, может ли оно прибить тред не вызывав end?

@waterlaz:
waterlaz

p = problem $ do
    x <- newVar
    y <- newVar
    x >| 0
    x <| 10
    y >| 0
    y <| 10
    (x*x + y*y) >| 9
    minimize $ x*x - 2*x*y + 4*x + y*y - 4*y + 4 + 7


*Main > last $ take 1000 $ optimize p
(7.000000322085075,array (1,2) [(1,0.8733208989876261),(2,2.872753373591708)])


ня?

@qnikst:
qnikst

я похоже молодец:

было
51,537,669,952 bytes allocated in the heap
27,446,537,400 bytes copied during GC

стало
4,862,292,952 bytes allocated in the heap
48,742,960 bytes copied during GC