コンビネータ

Haskell では引数として別の関数を取り、新しい関数を返す関数のことをコンビネータと言います。(Real World Haskell p231 )

-- 引数を倍にして返す関数
ghci> let twice=(*2)
ghci> twice 123       -- => 246

-- 引数を3倍にして返す関数
ghci> let thrice = (*3)
ghci> thrice 123      -- => 369

-- 関数を引数として、「引数の関数」と「3を加算する関数」を合成して返す関数
ghci> let add3 f = f.(+3)

ghci> add3 twice 1000      -- => 2006
ghci> add3 thrice 1000     -- => 3009