【发布时间】:2017-06-27 12:15:47
【问题描述】:
阅读 Real World Haskell 和 Typeclassopedia 我得到的印象是 2 元组 (a,b) 在 Haskell 中可以扮演非常特殊的角色。
我遇到的第一个用途是 lookup,我们使用 2 元组列表作为字典。
然后我还发现((,) e) 是函子的一个实例(但没有其他 n 元组),这在上面的(key,value) 示例中是有意义的。
最近的一个案例——我真正想问的那个——在 Typeclassopedia 的第 4.3 章。那里说((,) a) 是Applicative 的一个实例if a 是一个幺半群。你什么时候真正使用它?您在哪些应用程序中使用了(a,b) 的Applicative 实例?
【问题讨论】:
-
哦,情况变得更糟了!对也是
Foldable:stackoverflow.com/a/36461185/126014 -
我认为 2 元组本身并没有那么特殊的地位。关键是通常 2 元组比 3 元组更“适用”。如果你有一个“字典”,那么你可以获得一个键值列表,第三个值在这里没有意义。问题是:如何处理第三个元素。
-
是的,我明白了,我只是想知道
Applicative实例有什么用处,因为它要求第一个参数是Monoid实例。 -
((,) a)应用等价于writer monad。 -
@flawr 我不会这么说——基本上所有的 monad 也可以用作单纯的应用程序。只是——出于某种我不知道的原因——
Applicative似乎不如Monad直观,它的用例也没有Monad明显。