我一直在研究C ++ 11中的新功能,看起来很可能使用它编写一个非常实用的编程风格。我已经习惯在F#中使用List,Seq,Array类型,我看不出为什么他们的成员无法移植到某种C ++ 11模板中。对于混合函数式编程风格,您在使用C ++ 11与F#之类的东西中看到了哪些问题或优势?一旦C ++ 11出现,也许Boost人会创建一个新的functional
。
答案 0 :(得分:15)
在C ++中尝试使用函数式编程的最大问题是它不支持尾递归。在函数式语言中,当你正确地拖尾时,你不必担心堆栈爆炸,但在C ++中,你总是要担心这一点。因此,许多“功能”类型算法将是笨拙或沉重的。
答案 1 :(得分:5)
答案 2 :(得分:5)
以下是我在C#中编写函数代码时遇到的一些问题,还有我在使用C ++时的一些好处:
如果使用一些模板和预处理器魔法在C ++中实际可能有几个这些点,我不会感到惊讶,但除非你有非常冒险和宽容的同事,否则你不能在生产环境中真正使用它们。
之前我是一个顽固的C ++爱好者。然后我开始使用通用编程与模板和使用函数对象的高阶函数。写作太烦人了。在我尝试了一种功能语言后,我再也没有回头。
答案 3 :(得分:3)
对于混合函数式编程风格,使用c ++ 0x与f#之类的东西有什么优势?
upward funarg problem,40年前在Lisp的背景下进行过辩论!
答案 4 :(得分:0)
我想,实现C ++ 0x中函数式语言常见的某些优化(如常见的子表达式消除)会很有趣......