函数是一等公民
一等函数的概念是函数与程序中使用的任何其他数据没有什么不同。函数可以用作参数并作为其他函数的值返回。
ifEvenInc n = if even n
then n + 1
else n
ifEvenDouble n = if even n
then n * 2
else n
ifEvenSquare n = if even n
then n^2
else n
这些函数很容易编写,但这三个函数几乎是相同的。唯一的区别在于递增、加倍和平方的行为。其实这里是可以抽象化的通用计算模式。
执行此操作的关键是能够将函数作为参数传递以执行所需的行为。
ifEven myFunction x = if even x
then myFunction x
else x
inc n = n + 1
double n = n*2
square n = n^2
ifEvenInc n = ifEven inc n
ifEvenDouble n = ifEven double n
ifEvenSquare n = ifEven square n