use*_*552 9 c c++ functional-programming function-pointers
我一直在阅读这篇文章:http://en.wikipedia.org/wiki/Function_pointer,我有点困惑.由于C/C++支持函数指针,这是否意味着它们通常支持函数式编程?请注意,我实际上并不想使用C或C++进行函数式编程,但我很好奇,因为我从未听说过C或C++支持这样的事情.(我知道C语言中存在许多函数式编程语言的编译器,但这并不是我所说的"支持").
Bal*_*Pal 14
函数式编程(如果你真的感兴趣,请查阅它)与函数指针或缺少函数指针几乎没有关系.
C++是一种多范式语言,对FP有很多支持,尤其是后来的版本.许多人使用WG21像FP一样,并寻求支持.在C++ 11中,我们甚至得到了lambda和C++ 14多态lambda首次亮相.这涉及很多事情.虽然职能是二等公民,但lambda可以接管罚款.
不幸的是,尾递归处理仍然不是强制性的,但是编译器实际上处理它,并且在过去的十年中,当你刚刚搞砸const过载时,甚至可以方便地报告"无限递归".:)
你可以在C++中使用FP风格走得很远,学习它可以帮助你制作更好的代码,即使你选择其他风格.我鼓励大家学习SICP.
编辑:我不确定为什么这个答案会如此讨厌.这个问题专门询问函数指针,以及它们的存在是否意味着C++支持"一般的函数式编程".
以某种技术性的,非常有用的方式:是*."功能"编程的真正本质是功能是价值.C和C++在诸如轻松创建和破坏词法闭包之类的东西方面不会给你任何帮助,在部分应用方面也不会给你任何好处.事实上,您可以使用函数指针来模拟函数的外观,它们的行为类似于值,这实际上只是等效表达性语言的结果.试图将其与"函数式编程"混淆,实际上是深入了解图灵的tarpit.
*为了真正的技术区别,C和C++实际上没有任何函数类型的值.函数指针与函数值不同,即使它们在斜视时看起来有点类似.