下の式を完全なポイントフリースタイルにする方法を色々と考えてみたんだけど。
firstNLines n = unlines . take n . lines
結局分からんかったので、mixiで聞いてみたらさくっと教えてもらえた(ありがたい)。
unlines . take n . lines (unlines . take n) . lines (. lines) (unlines . take n) (. lines) ((unlines .) (take n)) ((. lines) . (unlines .)) (take n) ((. lines) . (unlines .)) . take (. lines) . (unlines .) . take
.って演算子として考えればよいらしい。だから、左側を取るように書き換えてやればいいのか。
Prelude> 5 + 7 12 Prelude> (+ 7) 5 12
(+)だとこんな感じ。
型を確認すると
Prelude> :type (.) (.) :: (b -> c) -> (a -> b) -> a -> c
.は(b -> c)と(a -> b)という関数をとってa->cという関数を合成する関数(二項演算子?)なのか。
(.) :: (b -> c) -> (a -> b) -> (a -> c)
関数合成で、変数が消えていくのは、こういうことなのね。