関数型プログラミングの基礎 クロージャと部分適用 中間演算子、ラムダ関数
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT1(関数型プログラミングの基礎)、LESSON5(クロージャと部分適用)、5.5(練習問題)Q5-2の解答を求めてみる。
コード
binaryPartialApplication :: (t1 -> t2 -> t3) -> t1 -> t2 -> t3
binaryPartialApplication f x = \y -> f x y
add2 :: Integer -> Integer
add2 = binaryPartialApplication (+) 2
double2 = binaryPartialApplication (*) 2
nums :: [Integer]
nums = [-5 .. 5]
main :: IO ()
main = do
print nums
print $ map add2 nums
print $ map double2 nums
入出力結果(Terminal, Zsh)
% runghc sample2.hs
[-5,-4,-3,-2,-1,0,1,2,3,4,5]
[-3,-2,-1,0,1,2,3,4,5,6,7]
[-10,-8,-6,-4,-2,0,2,4,6,8,10]
%