相关疑难解决方法(0)

Applicative/Monad实例在多大程度上是唯一确定的?

如上所述这个问题/答案,Functor实例唯一确定的,如果他们存在.

对于列表,有两个众所周知的Applicative实例:[]ZipList.因此,应用型不是唯一的(见GHC可以导出函子与应用型实例的单子变压器?而且为什么没有-XDeriveApplicative推广?).但是,ZipList需要无限列表,因为它pure无限期地重复给定元素.

  • 是否有其他可能更好的数据结构示例至少有两个Applicative实例?
  • 有没有这样的例子只涉及有限的数据结构?也就是说,就像假设Haskell的类型系统区分归纳和共同数据类型一样,是否有可能唯一地确定Applicative?

去进一步,如果我们能够扩大双方[]ZipList一个单子,我们会在那里有一个单子不是唯一的数据类型和其确定的函数对象的例子.唉,只有当我们将自己限制在无限列表()时才有ZipList Monad实例.并且为了创建单元素列表,所以它需要有限列表.因此:return[]

  • Monad实例是否由数据类型唯一确定?或者是否有一个数据类型的示例可以有两个不同的Monad实例?

如果有一个包含两个或更多不同实例的示例,则会出现一个明显的问题,如果它们必须/可以具有相同的Applicative实例:

  • Monad实例是否由Applicative实例唯一确定,或者是否有一个Applicative的示例可以有两个不同的Monad实例?
  • 是否存在具有两个不同Monad实例的数据类型的示例,每个实例具有不同的Applicative超实例?

最后我们可以为Alternative/MonadPlus提出同样的问题.由于存在两组不同的MonadPlus法则,这很复杂.假设我们接受一套法律(对于Applicative我们接受右/左分配/吸收,也参见这个问题),

  • 是由Applicative唯一确定的替代品,Monad的MonadPlus,还是有反例?

如果以上任何一个都是独一无二的,我会有兴趣知道为什么,要有一丝证明.如果没有,反例.

monads haskell functor category-theory applicative

26
推荐指数
2
解决办法
1197
查看次数

Haskell Functor暗示法律

Typeclassopedia说:

"类似的论点也表明,满足第一定律的任何Functor实例(fmap id = id)也会自动满足第二定律.实际上,这意味着只需要检查第一定律(通常通过非常简单的归纳法)确保Functor实例有效."

如果是这种情况,为什么我们甚至提到第二个仿函法?

Law 1: fmap id = id
Law 2: fmap (g . h) = (fmap g) . (fmap h)
Run Code Online (Sandbox Code Playgroud)

math haskell functor

21
推荐指数
2
解决办法
1524
查看次数

fmap和bind之间的关系

查阅Control.Monad文档后,我对这段话感到困惑:

上述法律意味着:

fmap f xs = xs >>= return . f

他们怎么暗示这个?

monads haskell functor

5
推荐指数
2
解决办法
789
查看次数

为什么bind(>> =)存在?没有绑定的解决方案难以处理的典型情况是什么?

这是绑定方法的类型声明:

(>>=) :: (Monad m) => m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)

我按如下方式阅读:将一个返回包装值的函数应用于包装值.

此方法作为Monad类型类的一部分包含在Prelude中.这意味着有很多情况需要它.

好的,但我不明白为什么它是典型案例的典型解决方案.

如果您已经创建了一个返回包装值的函数,为什么该函数尚未包含值?

换句话说,有许多函数采用正常值但返回包装值的典型情况是什么?(而不是获取包装值并返回包装值)

monads haskell

3
推荐指数
1
解决办法
278
查看次数

标签 统计

haskell ×4

functor ×3

monads ×3

applicative ×1

category-theory ×1

math ×1