gpt4 book ai didi

haskell - sequenceA 如何在对列表上工作?

转载 作者:行者123 更新时间:2023-12-02 02:33:38 26 4
gpt4 key购买 nike

分拆 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com