計算機科学のブログ

関数型プログラミングの基礎 クロージャと部分適用 中間演算子、ラムダ関数

入門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]
%