3

Representable Store Comonad 和 Store Comonad 提供了类似的功能……我们什么时候应该使用其中一个,有什么好处?

4

1 回答 1

5

作为参考,这里快速回顾一下它们是什么:

class {- ... => -} Representable f where
    type Key f
    -- ...

data RepStore f a = RepStore (Key f) (f    a)
data    Store s a =    Store s       (s -> a)

请注意,特别是

instance Representable (s -> a) where
    type Key (s -> a) = s
    -- ...

所以我们直接拥有它Store s并且RepStore (s ->)几乎完全可以互换。另一方面,范畴论告诉我们,所有Representable函子都与函数同构(以它们Key为域),因此RepStore f并且Store (Key f ->)是同构的。

总结:在大多数情况下,您选择哪个并不重要。如果你打算只在函数上使用它,你不妨使用它Store并从它的语法轻量中受益;如果您希望使用一些不完全是函数的可表示函子(例如,记忆函数或类似的东西),那么这RepStore是一个适当的概括。

于 2019-01-25T16:22:28.563 回答