gpt4 book ai didi

haskell - 这个列表理解如何产生这个输出?

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

我正在处理一些 Haskell 函数示例,但我不理解这个特定函数:

f x = [not a | a<-[x,not x], a]

它会生成 [False] 作为输出,但我不明白为什么。能否详细解释一下?

最佳答案

这个列表理解由三部分组成:

   [ not a | a <- [x, not x], a ]
-- ^ yield ^ generator ^ filter

生成器 因此让 a 迭代 包含两个元素的列表。这些元素是 [True,False][False,True](取决于 x 的值)。但因此总是相同的值(只是元素的顺序不同)。

接下来 filter 部分出现在 a 中。过滤器 保留谓词为 True 的值。这里的谓词只是a:因此它保留了a = True 的配置。由于 aTrueFalse 都被枚举,这意味着我们将只考虑 一个 项: aTrue 的那个。

对于该值,我们yield不是。现在 not True 当然是 False。因此,无论 x 的值如何(只要是 TrueFalse),我们都会生成 [错误]

结果是:

Prelude> let f x = [not a | a<-[x,not x], a]
Prelude> f True
[False]
Prelude> f False
[False]

关于haskell - 这个列表理解如何产生这个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318360/

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