to post messages and comments.

← All posts tagged Haskell

@ndtimofeev:

Что-то я забыл как устроено детектирование дедлоков в этом моём stm'е. Есть где статья про то как оно реализовано в GHC?

@ndtimofeev:

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

@ndtimofeev:

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

@ndtimofeev:

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

@ndtimofeev:

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

@ndtimofeev:

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

@ndtimofeev:

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

@ndtimofeev:

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

@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-сокет.

@ndtimofeev:

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

@ndtimofeev:

А threadWaitWrite работает с Fd чтобы намекнуть что для винды не имплементировано? Или просто из ненависти к человечеству как threadDelay с Int'ом?

@ndtimofeev:

А почему find ищет через Foldable, а lookup — через список?

@ndtimofeev:

Ну и коль скоро сегодня меня волнуют только извращения: можно ли из STM транзакции сделать atomicModifyIORef и расчитывать что его в самый неподходящий момент не прибьёт retry?

@ndtimofeev:

hackage.haskell.org — обартите внимание на инстанс в Monad: это вообще практически осмысленно или просто очень хотелось чтобы Monad?

@ndtimofeev:

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

@ndtimofeev:

При компиляции проекта с помощью cabal build на отдельном файле ghc виснет и постепенно подъедает всю системную память пока не встретит свой OOM. При использовании cabal repl всё отрабатывает нормально. Сотен конструкторов и километров паттернов в проблемном исходнике не обнаружено. И времени чтобы колупаться в том на чём наелся компилятор тоже нет. День обещает быть восхитительным. ghc-8.0.2 на linux если что.

@ndtimofeev:

Можно уговорить QuickCheck генерировать один из аргументов функции-свойства не каждый тест, а раз в 10-100 циклов?

@ndtimofeev:

А паттерн-синонимы действительно не могут быть рекурсивными? В смысле иметь сигнатуру вида pattern Pat :: a -> T -> T? А как так вышло и как с этим жить?