在这种情况下(包括我自己),通常首选使用列表理解作为 dflemstr 的答案生成列表。我假设您是 Haskell 的新手,所以我想详细说明您如何获取列表。结果应该是一样的。
注意:我的代码将无法放入 ghci 提示符,您需要创建 hs 文件并使用:l from ghci进行编译或加载
-- raw is [51, 52, 53, ... to infinity]
lst_raw = [51..]
-- you want only element that make this predicate True so just filter that do not out
lst_flt = filter (\x -> div 23 x == 7) raw
-- above list is infinite, want only first 500 element
mylist = take 500 lst_flt
或者您可以组合多行以摆脱不使用的中间绑定
mylist = take 500 $ filter (\x -> div 23 x == 7) [51..]
也只是对div 23 x部分感到好奇,因为div 23 x与div x 23是不同的,看起来 div 23 x 永远不会得到任何值 == 7
> take 100 $ map (\x -> x `div` 23) [1..]
[0,0,0,0,0 ... 4,4,4,4]
> take 100 $ map (\x -> 23 `div` x) [1..]
[23,11,7,5,4,3,3 .... 0,0,0,0]