我一直在研究C++11中的新功能,看起来很可能可以使用它以非常函数式的编程风格进行编程。我已经习惯使用F#中的List、Seq、Array等类型,我认为这些类型的成员们也可以被移植到某种C++11模板中。与使用F#进行混合函数式编程相比,您认为使用C++11存在哪些问题或优点?也许当C++11发布后,Boost的人会推出一个新的functional
库。
我一直在研究C++11中的新功能,看起来很可能可以使用它以非常函数式的编程风格进行编程。我已经习惯使用F#中的List、Seq、Array等类型,我认为这些类型的成员们也可以被移植到某种C++11模板中。与使用F#进行混合函数式编程相比,您认为使用C++11存在哪些问题或优点?也许当C++11发布后,Boost的人会推出一个新的functional
库。
尝试在C ++中以函数式风格编程的最大问题是它不支持尾递归。在函数式语言中,正确尾递归时无需担心堆栈溢出,但在C ++中,您必须始终担心这一点。因此,许多“函数式”类型算法将变得笨拙或繁重。
如果有几个问题实际上可以使用一些模板和预处理器魔术在C++中解决,那么这并不会让我感到惊讶,但在生产环境中,除非你有非常有冒险精神和容忍度的同事,否则你无法真正使用这些技巧。
我曾是一个死忠的C++爱好者。然后我开始使用带有模板和函数对象的高阶函数进行泛型编程。这只是太繁琐了。在我尝试了一种函数式语言之后,我再也没有回头过。
我想象一下,在C++0x中实现某些函数式语言常见的优化(如公共子表达式消除),会是一件有趣的事情。