gpt4 book ai didi

haskell - 强闭仿函数的泛化

转载 作者:行者123 更新时间:2023-12-02 06:29:31 26 4
gpt4 key购买 nike

我正在研究强仿函数和封闭仿函数的类别:

class Profunctor p where
dimap :: (a' -> a) -> (b -> b') -> p a b -> p a' b'
class Profunctor p => Strong p where
strong :: p a b -> p (c, a) (c, b)
class Profunctor p => Closed p where
closed :: p a b -> p (c -> a) (c -> b)

((,) 是一个对称双仿函数,因此它相当于“profunctors”包中的定义。)

我注意到 (->) a(,) a 都是endofunctors。看起来 StrongClosed 具有相似的形式:

class (Functor f, Profunctor p) => C f p where
c :: p a b -> p (f a) (f b)

事实上,如果我们看看法律,有些也有类似的形式:

strong . strong ≡ dimap unassoc assoc . strong
closed . closed ≡ dimap uncurry curry . closed

lmap (first f) . strong ≡ rmap (first f) . strong
lmap (. f) . closed ≡ rmap (. f) . closed

这些都是一般情况的特殊情况吗?

最佳答案

您可以将Choice添加到列表中。 StrongChoice(或 Jeremy Gibbons 所说的笛卡尔和 cocartesian)都是 Tambara 模块的示例。我在 profunctor optics 的博客文章中讨论了包含 Closed 的一般模式。 (跳到讨论部分),名称为相关

关于haskell - 强闭仿函数的泛化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com