在向某人解释什么是类型类X时,我很难找到正好是X的数据结构的好例子.
所以,我请求示例:
我认为Monad到处都有很多例子,但Monad的一个很好的例子与之前的例子有一些关系可以完成图片.
我寻找彼此相似的示例,区别仅在于属于特定类型类的重要方面.
如果有人能够设法在这个层次结构的某个地方隐藏一个Arrow的例子(它是在Applicative和Monad之间吗?),那也会很棒!
一个最近的问题通常问Haskell的各种类之间的边界.我提出了Handler一个有效的例子,Functor没有合理的Apply**实例,其中
class Functor f => Apply f where
(<.>) :: f (a -> b) -> f a -> f b
-- optional bits omitted.
Run Code Online (Sandbox Code Playgroud)
但是,我还没有找到一个Functor无法成为有效(如果无意义)实例的有效示例Apply.这一事实Apply 已经过(见更新),但单行法,
(.) <$> u <.> v <.> w = u <.> (v <.> w)
Run Code Online (Sandbox Code Playgroud)
似乎使这个相当棘手.
pigworker(康纳·麦克布莱德)前面举了一个例子的Functor,是不是Applicative,但他依靠pure这样做,这不是可用Apply.
**后来我意识到实际上可能有一个明智的(虽然有点奇怪)Apply实例Handler,从概念上收集同时异常.
Edward Kmett现在接受 …