可代表商店Comonad和商店Comonad提供了类似的功能...什么时候我们应该使用一种而不是另一种,好处是什么?
发布于 2019-01-26 00:22:29
作为参考,这里快速回顾一下它们是什么:
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是一个适当的泛化。
https://stackoverflow.com/questions/54368676
复制相似问题