闭包
add4 a b c d = a + b + c + d
GHCi> mystery = add4 3
运行此代码会发现它不会导致错误。 Haskell 创建了一个全新的函数
GHCi> mystery 2 3 4 12 GHCi> mystery 5 6 7 21
神秘函数将 3 添加到您传递给它的剩余三个参数中。当你在 Haskell 中调用任何参数数量少于所需参数的函数时,你会得到一个正在等待剩余参数的新函数。这种语言特性称为partly application。
函数 binaryPartialApplication,它接受一个二元函数和一个参数,并返回一个等待缺少参数的新函数:
binaryPartialApplication f x = \y -> f x y
add :: Int -> Int -> Int
add x y = x + y
addFive :: Int -> Int
addFive = binaryPartialApplication add 5