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

昨日、一昨日と天候不順で読書時間がなくなってしまいました。リスト内包表記の続きです。

  • ガード - 生成器が生成する値のうち論理式が真(True)になるものだけを取り出す
    • 素数判定する prime が以下のように定義できる
factors n = [x | x <- [1...n], n `mod` x == 0 ]

prime n = factors n == [1, n]
    • この実装の場合、遅延評価により、prime は factors が 1 の次に n 以外の約数を取り出した瞬間に False を返すので、全ての約数を列挙するのを待たなくてすむ
  • 関数 zip はリスト内包表記で使うのに便利
  • 文字列は Char のリストなので内包表記が使える
  • シーザー暗号をリスト内包表記を使って書く
  • 文字出現頻度からシーザー暗号を解読する関数を書く

Haskell の本でカイ二乗検定が出てくるとは思いませんでした。