【发布时间】:2019-06-03 06:40:10
【问题描述】:
在 Haskell 中,函子几乎总是可以派生的,是否存在类型是函子并且满足函子定律(例如 fmap id == id)但不能根据一组简单的规则派生的情况?
那么 Foldable、Traversable、Semigroup 等呢?有没有不平凡的案例?
【问题讨论】:
-
当您不知道应该将函数应用于第一个值还是第二个值时,您的意思是元组之类的东西?
-
@talex 不,如果将 (a, b) 的元组视为 b 上的函子,则 fmap 的结果是 (a, c),从中可以很清楚哪个值应该函数 b -> c 被应用到。
-
Haskell 中的函子总是可以派生的。 Bartosz Milewski 在他的书*程序员的类别理论*[1] 中谈到了这一点。我需要自己查找确切的参考和详细信息,但这与 Haskell 中的函子形成某种代数有关。 [1]bartoszmilewski.com/2014/10/28/…
-
可折叠、可遍历和半群都具有对称性,这允许它们以多种不同的方式合法地实例化,这至少是一种不平凡的感觉
-
@luqui,如果您使用 Atkey 样式的索引应用程序来定义类型对齐集合的可遍历概念,那么您应该恢复唯一性。
标签: haskell functor category-theory