Leonid 🦇
Вот у @voidlizard терпения то сколько.
Denis
Dmitry
Я на этой неделе менеджер, мне можно
Dmitry
На следующей может опять код писать буду
Denis
я тоже, но я на работе терпение оставляю
Denis
Denis
неделя тут, неделя там
Denis
@lonokhov я с растоканала заржал. 9/10
Leonid 🦇
Надо ещё фри монады притянуть
Dmitry
@catamorphism не, мне просто теперь недели хватает, что бы переключиться
Dmitry
Раньше месяц нужен был
anton
Кстати, в фримонадах там не эффективно они строятся, там проблемы с байндом в простой оригинальной реализации, на тайпклассах все же лучше, если несколько интерпретаций хочется
Denis
Это Control.Monad.Free.Church решает
Leonid 🦇
Denis
емнип
anton
И патерн матчинг он не совместим с edsl, ведь значений нет, это же синтаксич деревья все
Зигохистоморфный
Denis
список это частный случай Free
Зигохистоморфный
знаем) плавали
Зигохистоморфный
DList это частный случай FreeChurch
Зигохистоморфный
хотя все это у Кметта есть в 3 статьях про фри монады
Denis
каким образом это частный случай?
Denis
F f a явно общее DList a
Denis
т.е. в другую сторону еще поверю
кана
паттерны в хаскеле это такие смарт-конструкторы с большой буквы?
кана
или их еще и метчить можно?
Denis
PatternSynonyms матчабельные
Зигохистоморфный
F f a явно общее DList a
тем, что DList можно выразить через
type DList a = Codensity (Free ((,) a)) ()
Denis
Ну так это означает что то, что справа - более общее. Т.к. инстанциируя это с другими функторами, получается больше вариаций.
Зигохистоморфный
Denis
http://prntscr.com/ibh8ak
Denis
> edited
Denis
там до этого наоборот было написано 😜
Зигохистоморфный
Зигохистоморфный
потерял направление текста)
Denis
> ну я и сказал
ну и брехло )
Зигохистоморфный
Зигохистоморфный
интересно так можно?
newtype Rec f r = MkRec { unRec :: (f r -> r) -> r }
newtype Rec' f = MkRec' { unRec' :: forall r. (f r -> r) -> r }
Зигохистоморфный
будет ли так равнозначно?
Denis
не равнозначно
кана
второй требует полиморфную по r функцию, а первый специализированную, которую составить намного проще (то есть потенциально и тип более населен)
Зигохистоморфный
ну это понятно
Зигохистоморфный
интересно можно их свести к изоморфности?
кана
ну нет, я же сказал, что второй потенциально более населен, какая изоморфность
кана
вот Rec' f и Rec'' f = forall r. Rec f r возможно можно свести, но не факт
кана
да, PatternSynonyms интересный, но чет странно пахнет
Зигохистоморфный
я заметил одно, часто подход с CPS убирает квадратичную сложность
Зигохистоморфный
все потому что Church рулит)
Denis
это не тот черч энкодинг что на слуху
Anatolii
а можно поробнее?
Anatolii
Гонзалез где-то писал что черч энкодинг прямо обязательно понять. Но где почтитаь не сказал
Anatolii
какую-то ссылочку может киньте
Anatolii
или название пейпера может
Denis
http://programmable.computer/posts/church_encoding.html я подозреваю что гонзалез про лямбда-термы мог писать черч-энкоднутые
кана
в моем представлении черч-энкодинг это adt на лямбдах (а для работы со значенем свертки), а мне тут на функторах что-то кидали
Зигохистоморфный
так ведь все можно заэнкодить в черче
кана
о, да, то что выше
кана
типа
-- adt
data Tree a = Leaf a | Node (Tree a) a (Tree a)
-- church
type Tree a =
forall c. (a -> c) -> (c -> a -> c -> c) -> c
leaf :: a -> Tree a
leaf := \x foldLeaf foldNode ->
foldLeaf x
node :: Tree a -> a -> Tree a -> Tree a
node := \l x r foldLeaf foldNode ->
foldNode
(l foldLeaf foldNode)
x
(r foldLeaf foldNode)
foldTree :: (a -> c)
-> (c -> a -> c -> c)
-> Tree a
-> c
foldTree foldLeaf foldNode x = x foldLeaf foldNode
Зигохистоморфный
кана
все, что я выше написал, я и считал черч-энкодингом
Anatolii
Зигохистоморфный
newtype TreeC a = TreeC { runTree :: forall r. r -> (r -> a -> r -> r) -> r } deriving Functor
Зигохистоморфный
вот дерево в черче
кана
кана
если сделать Leaf со значнием, то получится то же, что и у меня
Зигохистоморфный
кана
кстати, отсюда у меня давно уже вывод идет, что
a) у foldов всегда редьюсер должен быть a -> b -> b, как у foldr
b) начальное значение должно идти перед редьюсером, так как [] объявлен ранее :
Alexander
растоканал откуда начинать читать ? СС @catamorphism
Denis
@qnikst да там одна фраза была по большому счету
Alexander
ну тогда не найти уже
Зигохистоморфный
Denis
хорошо что так хайлайты не работают
Alexander
сильно повезло
Kirill
Подскажите, чем из xml-я (строка) по xpath-у/набору фильтров вытащить значение ноды?
Denis
hxt самое xpath-оподобное было. Мы dom-parser/xml-conduit юзаем.
Cheese
у меня xml-lens в петпроекте
Kirill
можно примерчики?)