了解高阶函数
高阶函数是Haskell的重要性质,同时也是所有函数式语言的共同性质,高阶函数实际上就是函数的函数,就是把某个函数作为另一个函数的参数的形式,就是高阶函数。
还是来看个例子吧, 取一个函数并调用它两次的函数 ,用数学表达式表达出来就是 f(f(x)),而在Haskell中写函数其实和数学上的表达式非常接近,这也是为什么说Haskell更加接近数学的原因。
applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
(a->a)
表示第一个参数是一个函数,这个函数输入是a
类型,输出也是a
类型,第二个参数a
表示第二个参数是个变量,然后这个函数输出也是个变量。
再看第二行,f
表示函数,这个appleTwice
函数实际上就实现了 f(f(x))
的功能,并且,在实际中,f
是一个抽象概念,可以表示任意参数为变量的函数,这和数学上的f(x)非常相似,f(x)就是表示自变量为x的任意函数,所以我们在调用的时候可以这样。
applyTwice (+3) 10