繁体   English   中英

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 ++支持“一般的函数式编程”。

以某种技术性的,非常有用的方式:是*。 “功能”编程的真正本质是功能是价值。 C和C ++在诸如轻松创建和破坏词法闭包之类的东西方面不会给你任何帮助,在部分应用方面也不会给你任何好处。 事实上,您可以使用函数指针来模拟函数的外观,它们的行为类似于值,这实际上只是等效表达性语言的结果。 试图将其与“函数式编程”混淆,实际上是深入了解图灵的tarpit。

*为了真正的技术区别,C和C ++实际上没有任何函数类型的 函数指针与函数值不同,即使它们在斜视时看起来有点类似。

您可以使用C ++进行函数式编程,尽管该语言并不完全有用。 一阶函数编程,你只需尽可能地使用不可变值就足够了,虽然不是很简单,但实际上你可以实现monad

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM