to2yの日記

 | 

2006-07-29ふつける勉強会 第七回目 第七章 「関数」

関数合成

関数合成::複数の関数を合成して、新しい関数を作ること

(.)関数

(.)::(b -> c) -> (a -> b) -> (a -> c)

1引数のときはこんな感じて定義すればよい?

. f g = \a -> f $ g a


numberOfLinesの例

lines::String -> [String]

length::[a] -> Int

なので、

(length . lines) :: String -> Int

(length.lines)のように空白あけなくても大丈夫(少なくともGHCiでは)

(length . lines) "a" ==> 1

length . lines "a" ==> lines "a"が先に結合してしまうためエラー

(.)は右結合

sortLines::String -> String

sortLines = unlines . (sort . lines)

sortLines = unlines . sort . lines

としても同じ意味

 |