gpt4 book ai didi

haskell - 无法理解 Monad >> 应用程序的结果

转载 作者:行者123 更新时间:2023-12-03 14:57:00 25 4
gpt4 key购买 nike

操作>>说明如下:

Sequentially compose two actions, discarding any value produced by the first, like sequencing operators (such as the semicolon) in imperative languages.



这是让我感到困惑的例子:
> ([1] ++ [2]) >> ([2] ++ [3])
[2,3,2,3]

我期待列表 [2,3] 将是表达式的正确部分的结果。如何解释 [2,3,2,3] 的结果?

最佳答案

(>>)默认定义为

a >> b = a >>= (\_ -> b)

所以被忽略的值是 a在给定的一元值中 m a . >>=的类型专门列出的是:
(>>=) :: [a] -> (a -> [b]) -> [b]
l >>= f调用 f对于列表中的每个元素 l产生一个列表列表,然后将其连接起来。

例如
[1,2] >>= (\i -> [i, -i])
> [1,-1,2,-2]

忽略每个输入元素并返回值 [2,3]将导致列表的 n 个副本 [2,3]对于长度为 n 的输入列表

例如
[1] >>= (\_ -> [2,3])
> [2,3]

[1,2] >>= (\_ -> [2,3])
> [2,3,2,3]

第二个例子等价于 ([1] ++ [2]) >> ([2] ++ [3])在你的问题中。

关于haskell - 无法理解 Monad >> 应用程序的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38573331/

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