gpt4 book ai didi

list - 如何表示一个无限列表要为 elem 检查升序?

转载 作者:行者123 更新时间:2023-12-01 07:36:13 25 4
gpt4 key购买 nike

我有一个由以下列表理解初始化的无限素数列表:

primes = [x | x <- [2..], 0 `notElem` map (x `mod`) [2..(x `quot` 2)]]

这允许我进行类似 17 `elem` primes 的检查。确认 17 是素数。但是,当我检查列表中是否有非质数时,程序不会停止计算。我认为这是因为它没有意识到如果在大于该数字的素数之前在列表中找不到该数字,则在列表中的任何地方都找不到它。因此,Haskell 中是否有任何方式向编译器表明列表仅包含升序数字,以便 elem如果检查到达列表中大于其第一个参数的数字,它会知道停止并返回 false 吗?

最佳答案

一种可能性是使用 dropWhile :

isPrime n = (head $ dropWhile (< n) primes) == n

关于list - 如何表示一个无限列表要为 elem 检查升序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35556683/

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