to post messages and comments.

← All posts tagged Haskell

Положим у меня есть тип data T f = T (forall a. f a -> a) и линза вида Lens (f x) (f x) x x, где f — полиморфный контейнер фиксированного размера. Могу я как-нибудь при помощи второго наполнить первое?

В догонку к #2877381. Теперь я не только не понимаю зачем линзы (на самом деле призмы) обмазаны Profunctor, но ещё и не понимаю зачем нужен Profunctor, если есть Arrow. Стрелки в принципе делают всё то же самое.

Каждый раз хочу оператор для \meval err -> maybe (Left err) Right meval. Почему в куче base нет оператора для перехода от Maybe к Either? В принципе можно обмазаться error и catch, но получится говно.

neilmitchell.blogspot.ru — Вот тут Mitchell'у пишут, что static pointer'ы не стабильны и могут меняться от сборки к сборке, что довольно сильно ограничивает применимость его идеи. Это меня в принципе не удивило, но потом я вспомнил, что static pointers extension рожали в муках для нужд cloud haskell с целью гонять по сети указатели на функцию. Так вот вопрос: как им там живётся с такими гарантиями стабильности?

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

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

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