假设我有一个指向函数_stack_push(stack* stk, void* el)
的指针我希望能够调用curry(_stack_push, my_stack)
并返回一个只接受void* el
的函数我想不出一个办法,因为C不允许运行时函数定义,但我知道这里有比我聪明得多的人:)有什么想法吗?
最佳答案
我发现了Laurent Dami的一篇论文,讨论C/C++/ObjuleC:
More Functional Reusability in C/C++/Objective-c with Curried Functions
对如何在C中实现感兴趣:
我们当前的实现使用现有的C结构来添加Currun机制。这比修改编译器容易得多,并且足以证明对curring的兴趣然而,这种方法有两个缺点首先,curried函数不能进行类型检查,因此需要小心使用以避免错误其次,curry函数无法知道其参数的大小,并将它们视为整数大小。
本文不包含curry()
的实现,但您可以想象它是如何使用function pointers和variadic functions实现的。
关于c - 有没有办法在C语言中进行计算?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26720105/