somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【 Haskell】レンジから特定の数未満のリストを作成する

レンジから特定の数以下のリストを作成する方法です。

間違った方法

リスト内包表記とレンジを使っています。

[ x | x <- [1..], x < 10]

この場合、1からの整数がずっと続き9まで表示されますが処理が終了しません。10以上の数に対してずっと10未満であることを確認し続けています。

正しい方法

let y = 10 - 1
[ x | x <- [1..y]]

とりあえずできましたが、なんか気持ち悪いですね。HaskellRubyやGroovyなどにある終端を含まないようにする「...」があったら知りたいです。そもそも、Rangeオブジェクトを返すのでリストではないんですよね。