Haskell笔记 (五) 高阶函数

了解高阶函数

高阶函数是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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到面向模板编程时,我们通常是指C++的模板元编程(Template Metaprogramming,TMP)。模板元编程是一种在编译时进行的编程方式,基于C++的模板机制。它通过使用模板参数和特化等技术,使得程序可以在编译期间进行一些复杂的计算和类型操作。 在面向模板编程,我们可以使用模板来定义通用的算法和数据结构,使其适用于不同类型的数据。通过使用模板参数,我们可以实现代码的通用性,而不需要为每种类型都编写重复的代码。这种泛型编程的特性使得我们可以更高效地复用代码,并提高程序的可维护性。 另一方面,高阶函数编程是一种编程范式,其函数被视为“一等公民”,可以像其他数据类型一样被操作和传递。高阶函数编程强调函数的组合和转换,可以将一个或多个函数作为参数传递给另一个函数,并返回一个新的函数作为结果。 在高阶函数编程函数可以作为参数传递给其他函数,也可以作为返回值返回。这种能力使得代码更加简洁、模块化和可重用。高阶函数编程还支持一些特性,如闭包、柯里化和函数组合等,这些特性使得函数的组合和转换更加灵活和强大。 高阶函数编程通常与函数编程语言(如Haskell、Clojure等)相关联,但在C++,我们也可以使用一些技巧来实现类似的高阶函数编程的效果,如使用函数指针、函数对象(Functor)和Lambda表达式等。这使得我们能够在C++使用一些高阶函数编程的特性,如映射、过滤、折叠等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值