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

@qnikst:
qnikst

у меня есть:

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

есть:

scope :: StaticPtr Scope -> ....

хочу:

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

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

@qnikst:
qnikst

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

@qnikst:
qnikst

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

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

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

@qnikst:
qnikst

Есть программа (RTS), которая может создавать треды в разные странные моменты обычным pthread_create . Есть специальный superduper_thread_create, который создает нужные мне треды, но взять и перевести на него RTS неполучится (лень). Так же есть так же специальный метод, который позволяет конвертировать обычный posix тред в superduper тред.

Вопрос, есть ли какие-либо средства для автоматизации вызова функции конвертации треда в специальный после вызова pthread_create

@segfault:
segfault

У меня есть два рефакторинга
1. Было перемещено много файлов в разные каталоги, много из перемещённых файлов еще и редактировались.
2. Массивных перемещений не было, но было много правок в существующих файлах, некоторые файлы были удалены, некоторые созданы
Хочу эти два рефакторинга смержить. Если конкретно, то хочу сказать гиту, что путь A теперь соответстует пути B, путь C соответствует пути D и так далее. Т.е. рефакторинг 2 произвести над теми же файлами в новых путях рефакторинга 1. Нечто вроде git merge -s recursive -X subtree=path но расширенное.

@qnikst:
qnikst

Хочу что-то вроде cross-module афинной системы типов. Т.е. у меня есть правила зависящие от событий, хочу чтобы система типов проверяла, что в проекте есть хоть что-то, что такие события создает.

@qnikst:
qnikst

где бы достать шляпу как у петсона (http://www.kidsreview.ru/sites/default/files/blog_entry_161362.jpg)

@qnikst:
qnikst

А специализаций для структур данных еще не придумали? Чтобы ! анбоксил полиморфные структуры.

@qnikst:
qnikst

Есть: A_i — множество
B_i = F(A_i)
C_i = A_i \union B_i
A_{i+1} = B_i \difference A _i

это дело повторять пока A_i \neq \empty.

Как бы это на haskell наиболее человечески выразить, и желательно без сверх сложности..

@qnikst:
qnikst

Вот у меня есть фукнция сделать что-то с сервисом, поидее можно по ноде определить сервис, или по хосту определить её в итоге получаются функции:

doSmth :: Service S -> a -> Process b
doSmthOnNode :: Node -> a -> Process b
doSmthOnAnyNode :: Host -> a -> Proces b

Выглядит это печально, и что делать с этим непонятно, или городить на пустом месте класс типов CanDoSmth с инстансами для Service Node Host, или делать ADT в котором будет Service | Node | Host, или что-то ещё, например 100500 странсформеров..

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

В общем есть хороший вариант передачи "подсказок"

@qnikst:
qnikst

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

@segfault:
segfault

Есть дерево "T" , представляющее из себя выражине типа Bool, узлы дерева — логические операторы (and, or, xor, полный перечень зависит от решения), а листья — произвольные логические выражения. Все листья дерева помечены краской. Каждый лист в дереве считать уникальным. Задача: разбить дерево на несколько деревьев, в каждом из которых будут листья одинакового цвета, при этом, должно соблюдаться "(and T1 T2 T3 ...) == T", где T1, T2 — деревья с листьями одного цвета, для любых значений листьев. Листья нельзя выкидывать или использовать повторно в других деревьях, то есть, количество листьев в T должно быть равно сумме листьев в T1, T2 ...

Это случайно не какая-нибудь типовая задачка? Еще небось и библиотечка на хакадже есть?

@qnikst:
qnikst

В можно ли как-нибудь сделать unique type, который будет с логичным typeable, и одинаков прикомпиляции одной и той же программы на разных платформах

@qnikst:
qnikst

а реально ли в этих наших хацкелях сделать проксю связанную со значением (значение можно запихивать в RankNType контейнер)?

@qnikst:
qnikst

а вот реально ли в systemd сделать сервис с вычисляемым статусом, т.е. у меня есть сервис A и зависящий one-shot сервис B, который модифицирует состояние сервиса A. Этот B нужен при первом запуске для конфигурации, в дальнейшем A, будет устанавливать свой стейт правильно, при этом хотелось бы systemd командами видеть, что включено состояние устанавливаемое сервисом B. Это вообще реально?

@qnikst:
qnikst

Вот есть задача составления расписания с ограничениями, это типичная задача для пролога, классы типов в haskell это prolog-like программирование. Вопрос можно ли решить задачу с составлением расписания чисто на уровне типов в haskell, и какие есть ограничения на задачу, которую можно решить?

@qnikst:
qnikst

Есть приложение с кучей тредов, которые ждут IO делают IO и ждут таймеров, так вот хотелось бы чтобы тот, кто ждёт таймера был бы с большим приоритетом, т.к. сейчас получается что при heavy CPU bound тасках задержка между временем когда таймер сработает и переключением может пройти слишком много времени.
Какие идеи в т.ч. паранормальные есть?

@qnikst:
qnikst

а вот stack или cabal осилят сбилдить следующие зависимости:

A.cabal
library
...
executable test-stuff
build-depends: B

B.cabal
library
build-depends: A

т.е. в пакете A есть библиотека, и исполняемый файл зависящий от пакета B, зависящего от билиотеки A.

@segfault:
segfault

А вот можно как-нибудь сгенерить теги для когда, сгенерированного в TH? В идеале, чтобы указывали на вызов TH кода, который сгенерировал.

@qnikst:
qnikst

есть баш скрипт, который при всем том, что делает создает кучу переменных окружения, я хочу их получить после его выхода, как?
запускать через `. my-script.sh`? а можно ли при этом ещё простым образом вернуться к предыдущему состояниб окружения до `. my-script.sh`?

@qnikst:
qnikst

есть квазицитата, принимающая на вход строку и генерящая много кода:
`schemaQQ :: QuasiQuoter` хочется ей подсовывать файл считанный из файловой системы, как бы это попроще сделать?

@qnikst:
qnikst

задача.. у меня есть глобальная IORef, пара специальных ядерных потоков, и код, который может хотеть значение в IORef использовать, а может не хотеть. Нужно сделать так, чтобы значение в IORef инициализировалось только если оно кому-нить нужно. (это просто unsafePerformIO initialize).
Дальше сложно, инициализация может проводиться только в ядерном потоке. Соотвественно initКернелПоток $ do initializeЗначение ; программа дальше
работает, но ровно до тех пор пока есть ядерный модуль, иначе все плохо. Вот как бы написать так, чтобы при пинании значения из любого треда оно бы инициализировалось в ядерном.

P.S. пока я писал это я придумал нормальное решение, которое проще и всех устраивает ,но как сделать то, что выше все равно интересно

@qnikst:
qnikst

Дано: проект (2шт) ну или их кабал файлы, внешний скрипт, который будет запускаться runhaskell (ну или даже пусть executable в одном из пакетов), хочется в скрипте собрать все определенные инстансы.
В принципе это вполне можно сделать если заимпортировать инстансы из всех модулей. Вопрос, как это сделать?
(ну или может можно распарсить .hi файлы, но тогда вопрос чем это сделать просто)

@qnikst:
qnikst

Максимально глубкий коммит, к которому применяется патч без конфликтов. Как?

@qnikst:
qnikst

хочу шел, который умеет модифицировать вывод программ о которых он знает, например при запуске the silver searcher, модифицировать все показанные строки в ссылки на вызов vim +number file. Есть что существующее, и куда копать?

@qnikst:
qnikst

а какие есть "дешевые" по ресурсам CI системы или как их писать, чтобы легко интегрировать с github? А то у меня висят пара дешевых инстансов на DO, на которых только quassel не жручий, и не охота лишние деньги circleCI платить (цена вполне сравнима).

@qnikst:
qnikst

хочу создать контейнер из контейнера, и нужно там примонтировать файлики (изнутри 1-го контейнера), вопрос, какой путь указывать?

@qnikst:
qnikst

есть rest сервис, на котором используются несколько подсервисов (общение с хитрым демоно, общение с докером и т.п.). Хочется сделать страничку status, на которой в human readable form был бы результат self check этих сервисов. При этом идеально было бы сделать это так, чтобы при добавлении новых проверок и новых сервисов мне бы нужно было модифицировать минимум кода. Куда копать и какие best practices тут имеются?
Я так понимаю, что минимум кода при модификации это только если TH делать создавать свой класс и собирать инстансы в Main или есть ещё что хорошее?

@qnikst:
qnikst

есть openvpn-сервер — задача выключать его после периода неактивности, куда копать?

@qnikst:
qnikst

@drChaos ты уже запилил newtype для ByteString ограничивающий размер и на уровне типов это хранящий?

@qnikst:
qnikst

я ведь правильно понимаю, что один процесс в двух namespace-ах я никаким чудом не запущу?

@qnikst:
qnikst

А есть ли какие-нибудь средства для создания индексов предоставляющих bitfield и эффективные запросы по ним, минимально уметь `where field ^^ requested != 0`. Если ли готовое, куда копать для решения?

Для исключения X-Y проблемы: есть куча объектов со свойствами (тип, значение (Int)) объектов дохренища, свойств тоже много, но ограничено. Нужно уметь выбирать объекты удовлетворяющие всем требуемым свойствам, свойств в запросе может быть до десятка. Говорят, что в битфилд на ~50000 bit все уместится (считал не я)

@qnikst:
qnikst

а как в гите правильно сделать бранч с совсем пустой историей, хочу там хранить gh-pages?
поидее можно от рут коммита отфоркаться, но правильный ли это путь?

@qnikst:
qnikst

кто-нибудь может сформулировать годные принципы когда выбирать строгий текст, а когда ленивый, а то я тут в одной большой программе убрал дофига прыжков между Text/String/ByteString, но как-то исторически остались прыжки между ленивыми и строгими текстами. В программе полный набор удовольствий, хранение текстовых данных, получение из сети, разбор-сбор временных текстовых представлений, отправка в свой сервис, парсинг результа, отправка в сеть.

@qnikst:
qnikst

У меня есть докерфайл, в котором делается:

RUN git clone git@github.com:orgname/proect.git

сам этот докерфайл лежит в этом самом проекте.
Когда данная штука собирается CI и все работает хорошо.

Но есть ещё один сценарий, когда я не хочу шупить код до тех пор, пока не поправлю все и не прогоню CI скрипнты у себя, в этом случае команда естественно делает не то, что нужно.

Вопрос, как бы адекватно сделать выбор или качать из гита, или брать из окружения где запускается докер?

@qnikst:
qnikst

какая-нибудь удобная програмка для таймера с управлением горячими клавишами имеется, нужно чтобы висела окном и показывала набегающее время и умела останавливаться. Ну и countdown таймер тоже привествуется.

@qnikst:
qnikst

как получить cabal-1.22 на системе с ghc-7.6 не поломав базу?
Вариант: склонировать cabal, собрать его при помощи ghc Setup.hs .. и т.д. установить его, потом с помощью утановленного cabal сделать песочницу и установить кабал в песочницу, котом удалить ~/.cabal и ~/.ghc выглядит каким-то адом.

Убунтуспецифичный вариант принимается, т.к. в нормальных системах проблема решается проще.

@IPShuvaev:
IPShuvaev

Допустим, есть код типа

let go = do {s <- getLine; if True then return () else putStrLn s}

Очевидно, при каждом вызове go необходим ввод пользователя, хотя в дальнейшем он и не используется. Хочется отложить выполнение getLine до того момента, как реально потребуется значение s. Попытка использовать unsafePerformIO привела к неожиданному для меня результату:

:m System.IO.Unsafe
let go = let s = unsafePerformIO getLine in if False then return () else putStrLn s
go
1
1
go1

Вопрос, как быть в первом случае и почему getLine во втором примере вызывается лишь один раз при нескольких вызовах?

@qnikst:
qnikst

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

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

Почему кост-центры — т.к. в принципе позволяет описывать поведение не внося модификаций в исходный кот.

В принципе у нас есть подобная штука, но для distributed-process и соотвественно оно работает слегка по другому, создавая точки для блокировок и возможных вариантов запуска только в d-p специфичных функциях. Но это дело врятли будет открыто в обозримом будущем :( да и не решает всего, что хотелось бы.

Никто запилить не хочет?

@qnikst:
qnikst

Хочется странного есть передаваемая utf8 строка.
у меня есть операции, которые позволяют мне работать с ней как с бинарным блобом, т.е. просто набором битов. Мне хочется в эту строку вставлять специальные маркеры, которые будут её разбивать на части (пусть пока будет только 1 вид маркера, но желательно уметь больше). Так вот вопрос, как бы так закодировать этот маркер, так чтобы он не был частью валидного utf символа?