Описание тега profunctor
Вопросы о профункторах, конструкторах типов, которые поддерживают ковариантное отображение по параметру типа, например, простой функтор, и контравариантное отображение по другому параметру.
1
ответ
Почему в GHC нельзя принудить гиперфункции?
У меня есть следующий тип, который основан на бумажной свертке Coroutining с гиперфункциями: newtype Hyper a b = Hyper { invoke :: Hyper b a -> b } Он контравариантен по первому аргументу и ковариантен по второму, так что это профунктор: instance…
04 июн '20 в 19:30
2
ответа
Агрегация массивов по таблице ссылок в Opaleye
Я пытаюсь создать запрос Opaleye, соответствующий следующему SQL: select * , (select array_agg(tags.tagname) from articles_tags inner join tags on tags.id = articles_tags.tag_fk where articles_tags.article_fk = articles.id ) from articles Используем…
31 июл '20 в 15:30
1
ответ
Что за профунктор представляет "иссушение"?
В этой статье Криса Пеннера говорится об "Увядшей оптике"; Оптика, которую можно использовать для фильтрации предметов из конструкции. В статье для этой оптики используется следующее представление "Ван Лаарховен": type Wither s t a b = forall f. Alt…
01 ноя '20 в 19:12
1
ответ
Профунктор Исо не печатает чек
Пытаюсь реализовать простейшую профункторную оптику в Идрисе. Iso — это функция, которая должна быть полиморфной во всех профункторах. Я думаю, что это правильный синтаксис. Все типовые проверки, кроме финального теста. interface Profunctor (p : Typ…
01 дек '21 в 04:01
1
ответ
Есть ли причина, по которой экземпляр Profunctor (->) определяет как dimap, так и lmap/rmap?
В исходном коде на Hackage я прочитал это: instance Profunctor (->) where dimap ab cd bc = cd . bc . ab {-# INLINE dimap #-} lmap = flip (.) {-# INLINE lmap #-} rmap = (.) {-# INLINE rmap #-} но стандартные реализации // для Profunctorпотребуется…
24 янв '21 в 15:33