了解Haskell中的仿函数,例如: [Integer]
或[] Integer
,我了解函数需要定义fmap
(在列表示例中:fmap = map
)。
如果我做得对,仿函数可以实现顺序应用程序 <*>
,以便成为 applicative functor 。这就是为什么
[(1+), (2+)]
是列表实例[] Integer
的完美元素。和像
(+) <$> [1..10] <*> [101..110]
明智。
我发现的Functor
实例的示例也都是 applicative functors 。即对<*>
有一个明智的定义。函子的典型例子也许,[],e,树,e - &gt;,对,(,)e,......通常都是适用的(即<*>
有一个合理的定义) 。根据我的理解,他们甚至都是monad!
我发现ZipList
作为不是monad(for a reason)的应用仿函数的示例。
现在有一个仿函数不是一个应用函子,而且合理吗?