すごい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]
もっとスマートな書き方があるのかしらん。