在C ++中,如果您要编写自己的通用sort
函数模板,该模板采用比较谓词参数,那么编译器就能够内联此谓词。
在C中不是这种情况:qsort
编译一次,其比较谓词参数永远不会内联(最近可能是编译器/链接器的最新状态有所改进,所以如果我的信息是外的日期)
这对C ++中的泛型编程很有好处(当然不仅仅是sort
函数):你可以达到相同的性能,在C中你必须放弃泛化(或者使用宏)
我的问题是:Idris可以做C ++在这里做的事吗?它可以内联用作参数的函数吗?
答案 0 :(得分:1)
Idris确实支持通过注释机制对高阶函数进行部分评估。通过标记您希望在编译时{{1}}传递的参数,您可以将生成的程序专门化。
比照。 the manual了解更多详情。