すごいHaskell本

今日も5章の続き。「5.2 高階実演」より。

5.2 高階実演

うーん? 部分適用は、すごいようなそうでないような。もうちょっと実践的な例がないとよくわからないです。
書いてあることはわかるのだけれど、でも「わかっていない感じ」がする。テトラちゃん。

p67の、「flipを実装する」。関数を簡潔化する手順が今ひとつ理解できないというか。
「わからない」とマークしておいて次に進みます。

5.3 関数プログラマの道具箱

map,filterとリスト内包表記

map関数やfilter関数と同じことをリスト内包表記でもできる、というおはなしでした。じゃあどっちを使えばいいのだろうと思った矢先に以下の文章。

どんなときにリスト内包表記ではなくmapとfilter関数を使うべきか、ルールのようなものは何もありません。コードと文脈に応じて、単純に読みやすいほうを採用してください。

よい本だと思います。



p70に、次のように書いてあります。

リスト内包表記で複数の述語を指定するようなケースをfilterで書くときには、filterを何度か適用するか、述語を論理関数&&でつないで指定します。

しかし、「述語を論理関数&&でつないで指定」するというのはどうすればよいのでしょうね。2つの関数を適用するような関数を自分で書いてfilterに渡せばいいってこと?
具体的には以下の様な感じするということです。

underFifteenEven :: Int -> Bool
underFifteenEven x = even x &&  x < 15

*Main> filter underFifteenEven [1..20]
[2,4,6,8,10,12,14]

もっとスマートな書き方があるのかしらん。