作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
分拆 this问题。直觉上我明白了什么sequenceA
在那个用例中,但不是 如何/为什么它就是这样工作的。
所以这一切都归结为这个问题:sequenceA
在以下情况下工作?
> sequenceA [("a",1),("b",2),("c",3)]
("abc",[1,2,3])
我看到
sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
所以在
Traversable
上面的用例中是
[]
,以及
Applicative
, 自
(,)
是二进制类型的构造函数,是
(,) a
,这意味着该对被视为其
snd
上的应用仿函数 field 。这与最终在
snd
中的列表一起出现。结果。因此,我们从一对列表转到第二个字段中包含列表的一对。
"abc"
在哪里?来自?我的意思是,我知道它是
fst
的串联。在所有对中,但我不知道它是否通过
++
或通过
concat
fst
的列表中s。
sequenceA
中似乎什么都没有的签名以强制执行
fst
s 对可以组合在一起。
sequenceA [('a',1),('b',2),('c',3)]
最佳答案
它使用 mappend
. Applicative
它使用的实例如下所示:
instance Monoid a => Applicative ((,) a) where
pure x = (mempty, x)
(af, f) <*> (ax, x) = (mappend af ax, f x)
关于haskell - sequenceA 如何在对列表上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64177058/
我是一名优秀的程序员,十分优秀!