プログラミング Haskell 第5章 リスト内包表記 その1

プログラミングHaskell

プログラミングHaskell

第5章はリスト内包表記です。文法のひとつに1章を割いて説明とはずいぶん特別な扱いですね。

  • [x ^ 2 | x <- [0,1,2,3,4] ] こんな感じで | で区切って書く
  • x <- ... の部分を「生成器」と呼ぶ
  • 生成器はカンマで区切って複数書ける
    • 複数書いた場合は後のほうが頻繁に変化する
    • 前方の生成器が生成した変数を後の生成器で利用できる [y | x <- [0,1,2], y <- [x..3] ] みたいに
    • concat がこんなふうに書ける!
concat :: [[a]] -> [a]
concat xss = [ x | xs <- xss, x <- xs ]

なるほどリスト内包表記は非常に強力な処理能力を持っているんですね。正規表現と同じで複雑なことをしようとすると解読が難しくなりそうなのがちょっとこわいですけど。
時間切れなので今日はここまで。