Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

13章分の5章

今日は,『プログラミングHaskell』の5章まで読みました。

第4章 関数定義

自分では,だいたい理解できたと思いますが,「4.5 λ式」の中の const の理解が不十分だと思います。

第5章 リスト内包表記

特に,第5章は読んでいてとても楽しい章でした。扱っている例がいいんだろうと思います。
例えば,約数を求めるfactors関数を定義し

> factors 15
[1,3,5,15]

それを使って,素数か否かを判定する関数primeを定義し,

> prime 15
False
> prime 13
True

さらに,それらを使って,与えられた上限までの素数すべてを生成する関数primsを定義していくというように,流れるように解説が進んでいきます。読者は,そのゆるやかな流れに乗っておけば理解できる構成になっています。

後半では,シーザ暗号についても取り上げられているのですが,先の素数の例と同様,簡単な関数を順番に組み立てて,少しずつシーザ暗号を作り上げていきます。シーザ暗号は,出現頻度表を用いることで,簡単に解読されるということは,『新版暗号技術入門 秘密の国のアリス』を読んで知っていましたが,カイ2乗検定を用いて,あっさり解読できたのには,これほどまで簡単なのかとびっくりでした。

本書の翻訳をされた山本和彦さんも,ブログのなかで,第5章を以下のように絶賛されていますが,まさに感動の内容でした。

リスト内包表記

他の本では、著者がリスト内包表記をあまり理解していないためか、「リスト内包表記を使うとプログラムが分りにくくなる」と書いて、ほとんどリスト内包表記について説明しません。一方、この本では、まるまる一章が割り当てられています。

著者は「導入」の章で、Haskell の長所としてリスト内包表記を挙げています。他のいい加減な本に影響されていた僕は、「えー、そうなの?」と疑問に思いました。でも、読んでビックリ。本当にリスト内包表記は便利なのです。

友達は、Project Eulerが簡単に解けるようになったと、驚いていました。

この章だけでも、この本は「買い」です。