Haskellの関数は部分適用を利用している
つまり、関数を本来より少ない引数で呼び出しているのだ。
また、中置関数についても、セクションという機能を使って部分適用することが出来る。
中置関数をセクションするには、片側だけに値を置いて括弧で囲むだけである。
これで引数を1つ、値を置かなかった側に取る関数が出来る。
multThree :: Int -> Int -> Int -> Int multThree x y z = x * y * z compareWithHundred :: Int -> Ordering compareWithHundred x = compare 100 x divideByTen :: (Floating a) => a -> a divideByTen = (/10)
結果
Prelude> max 4 5 5 Prelude> (max 4) <interactive>:3:1: No instance for (Show (a0 -> a0)) arising from a use of `print' Possible fix: add an instance declaration for (Show (a0 -> a0)) In a stmt of an interactive GHCi command: print it Prelude> (max 4) 5 5 Main> let multTwoWithNine = multThree 9 Main> multTwoWithNine 2 3 54 Main> compareWithHundred 99 GT Main> divideByTen 200 20.0 Main> 200 / 10 20.0 Main> (/10) 200 20.0 Main> multThree 3 4 <interactive>:17:1: No instance for (Show (Int -> Int)) arising from a use of `print' Possible fix: add an instance declaration for (Show (Int -> Int)) In a stmt of an interactive GHCi command: print it Main>