小编Par*_*ian的帖子

如何表示无限列表升序进行元素检查?

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

primes = [x | x <- [2..], 0 `notElem` map (x `mod`) [2..(x `quot` 2)]]
Run Code Online (Sandbox Code Playgroud)

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

primes haskell list infinite lazy-evaluation

3
推荐指数
1
解决办法
188
查看次数

标签 统计

haskell ×1

infinite ×1

lazy-evaluation ×1

list ×1

primes ×1