虽然我对数学上的柯里化有些了解,但是部分应用中缀函数是一个新概念,我是在深入学习Learn You a Haskell for Great Good这本书后才发现的。
给定以下函数:
applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
作者以一种有趣的方式使用它:ghci> applyTwice (++ [0]) [1]
[1,0,0]
ghci> applyTwice ([0] ++) [1]
[0,0,1]
我可以清楚地看到,生成的函数传递了不同的参数,这在考虑到它是柯里化函数时通常不会发生(不会吗?)。那么,Haskell是否对中缀运算符有任何特殊处理?是否适用于所有中缀函数?
顺便说一句,这是我学习 Haskell 和函数式编程的第一周,我还在读这本书。
(1 \
elem`)和
elem 1` 是一样的吗? - Neil(++)
可以理解为一个省略了两个输入的函数。 - Dan Burton