最近我一直在思考如何用C(而不是C++)进行函数式编程。显然,C是一种过程化语言,本身并不真正支持函数式编程。
是否有任何编译器/语言扩展将一些函数式编程构造添加到语言中?GCC提供了nested functions作为语言扩展;嵌套函数可以访问父堆栈帧中的变量,但这离成熟的闭包还有很长的路要走。
例如,我认为在C中真正有用的一件事是,在任何需要函数指针的地方,你都可以传递一个lambda表达式,创建一个衰减为函数指针的闭包。C++0x将包含lambda表达式(我认为这很棒);然而,我正在寻找适用于纯C语言的工具。
编辑澄清一下,我并不是试图解决C中更适合函数式编程的特定问题;我只是好奇如果我想这样做的话会有什么工具。
发布于 2008-10-19 18:32:19
发布于 2010-07-31 22:31:01
你可以使用GCC的嵌套函数来模拟lambda表达式,实际上,我有一个宏来做:
#define lambda(return_type, function_body) \
({ \
return_type anon_func_name_ function_body \
anon_func_name_; \
})
像这样使用:
int (*max)(int, int) = lambda (int, (int x, int y) { return x > y ? x : y; });
发布于 2012-01-02 13:35:37
Hartel &Muller的书,Functional C,如今(2012-01-02)可以在http://eprints.eemcs.utwente.nl/1077/上找到(有一个到PDF版本的链接)。
https://stackoverflow.com/questions/216037
复制相似问题