【发布时间】:2014-10-08 18:58:34
【问题描述】:
什么是具有类似于 QuickCheck 的promote 函数的结构的函子的总称,即以下形式的函数:
promote :: (a -> f b) -> f (a -> b)
(这是flip $ fmap (flip ($)) :: f (a -> b) -> (a -> f b) 的倒数)。除了(->) r 和Id 之外,是否还有任何具有这种操作的函子? (我确信必须有)。谷歌搜索“快速检查提升”只出现了快速检查文档,在任何更一般的 AFAICS 上下文中都没有给出promote;在 SO 中搜索“快速检查提升”不会产生任何结果。
【问题讨论】:
-
sequenceA相关吗? -
让我看看。代入
sequenceA的类型,我们将得到t = (->) a和f = f。所以如果(->) a有一个Traversable实例,那么这个函数将存在于所有a。不过,我认为Traversable ((->) a)需要(Bounded a, Enum a)或等效项。 -
不管怎样,universe 包家族提供了requisite
Traversableinstance。 -
@Daniel Wagner,啊,给定
Finite,我猜这本质上是一回事。
标签: haskell functional-programming functor quickcheck category-theory