リスト内包表記を使用してリストを生成する場合、通常、この場合(私を含む)、dflemstrの回答が優先されます。あなたはHaskellを初めて使用するので、リストを取得する方法を詳細に説明したいと思います。結果は同じになるはずです。
注:私のコードはghciプロンプトに入れることができません。hsファイルを作成し、ghciから:lを使用してコンパイルまたはロードする必要があります。
-- 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..]
また、 div23xとdivx23は異なり、 div 23 xは値を取得しないように見えるため、 div23xの部分に興味があります==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]