gpt4 book ai didi

haskell - 列表理解不以方括号结尾,控制台卡住

转载 作者:行者123 更新时间:2023-12-01 22:51:27 25 4
gpt4 key购买 nike

在 GHCi 中输入列表理解不会生成列表,最后的方括号丢失,并且控制台卡住。这是我想出的:

[13*x + 3 | x <- [1..], rem (13*x + 3) 12 == 5, mod (13*x + 3) 11 == 0, 13*x + 3 <= 1000]

我认为问题在于 x <- [1..] , 或 13*x + 3 <= 1000 .通过 13*x + 3 <= 1000我的意思是确定 x <- [1..] 中值 x 的上限可以拿。

我返回了一个结果 [341 , 但确实缺少第二个方括号,并且控制台卡住。

最佳答案

您的程序进入无限循环。

第一个数字是 341,但为了生成下一个 数字,您的程序会不断查找 x 的所有后续值。 ,为这些值评估所有守卫,并检查所有守卫是否为真。最后一个守卫,13*x + 3 <= 1000永远不会再变为真,所以程序只是不断枚举 x 的值永远。它正在寻找下一个这样的 x所有守卫都是真实的,一旦找到一个,它就会打印出来。但是这样x永远不会来。

如果你希望列表结束一次x*13 + 3 > 1000 , 你必须使用 takeWhile :

... | x <- takeWhile (\y -> y*13 + 3 <= 1000) [1..],  ...

这样,当列表达到 1000 时,列表实际上将停止。不再有 x 的值。将被生产。

关于haskell - 列表理解不以方括号结尾,控制台卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74278549/

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