C/ c++中的函数式编程
Functional programming in C/C++?
我一直在阅读这篇文章:http://en.wikipedia.org/wiki/Function_pointer,我有点困惑。由于C/c++支持函数指针,这是否意味着它们一般都支持函数式编程?请注意,我实际上并不想使用C或c++进行函数式编程,但我很好奇,因为我从未听说过C或c++支持这样的事情。(我知道在C语言中存在许多函数式编程语言的编译器,但这不是我所说的"支持"的真正意思)。
函数式编程(如果你真的感兴趣,请查阅它)与函数指针或缺少函数指针几乎没有关系。
c++是一种多范式语言,对FP有大量的支持,尤其是后来的版本。许多与WG21一起工作的人都喜欢FP,并希望得到支持。在c++ 11中,我们甚至引入了lambda,在c++ 14中,多态lambda首次亮相。这涵盖了很多东西。当函数仍然是二等公民时,lambda可以很好地接管。
不幸的是,尾递归处理仍然不是强制性的,但编译器实际上处理它,在过去的十年中,当你搞砸了const重载时,甚至可以方便地报告"无限递归"。:)
在c++中使用FP风格可以走得很远,学习它可以帮助你写出更好的代码,即使你选择了其他风格。我鼓励大家学习SICP
编辑:我不知道为什么这个答案会受到如此多的憎恨。这个问题特别询问了函数指针,以及它们的存在是否意味着c++支持"一般的函数式编程"。
用一种技术的,不是很有用的方式:yes*。"函数式"编程的真正本质是函数是值。C和c++在容易创建和销毁词法闭包方面不会给您任何帮助,在部分应用程序方面也不会给您任何帮助。事实上,您可以使用函数指针来模拟函数的行为有点像值,这实际上只是等效表达性语言的结果。试图将它与"函数式编程"混为一谈,真的是在深入图灵的领域。
*真正的技术区别是,C和c++实际上没有任何函数类型的值。函数指针与函数值是不同的,即使你眯着眼睛看它们看起来有点像。
您可以使用c++进行函数式编程,尽管该语言并没有提供确切的帮助。在一阶函数式编程中,您只需尽可能多地使用不可变值,这当然很容易,虽然并不完全容易,但您实际上可以实现单子!
- 有一个打印语句的函数是一种糟糕的编程实践吗
- C++使用模板元编程生成函数
- 在C++中编程,将 3 个数字发送到一个函数,然后计算这 3 个数字的平均函数
- 如何使用模板元编程在自由函数C++链接两个不相关的类
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- 以编程方式在 C++ 中创建函数
- 创建析构函数是好的编程实践吗?
- 当您希望在Arduino Uno编程中同时执行不同函数时,使用什么代码/语句
- 使用C++元编程提取 C 函数的参数("Practical C++ Metaprogramming" 中的示例)
- 函数模板编程而不是继承
- 可视化 在C++编程中编写一个函数星号
- C++函数式编程.实施 f(a)(b)(c)
- C :对输入验证函数进行编程的性能影响可以对其进行编程,而每次都可以将其编程
- 是否有任何函数可用于在 c++ 编程中传输流程,以替代 while 或 do while 循环
- 在使用英特尔内部函数对 SIMD 代码进行编程时,如何强制使用 vmovapd 而不是 vmovupd?
- CPP 元编程:包含元组函数
- 模板元编程:检查稍后定义的函数是否存在
- 是c++模板元编程的一种函数编程形式
- 为什么Erlang和其他函数编程语言不是原生的c/c++
- 形成递归函数C++编程