Idris内联函数可以用作参数吗?

时间:2017-07-12 19:06:39

标签: templates compiler-optimization idris inlining

在C ++中,如果您要编写自己的通用sort函数模板,该模板采用比较谓词参数,那么编译器就能够内联此谓词。

在C中不是这种情况:qsort编译一次,其比较谓词参数永远不会内联(最近可能是编译器/链接器的最新状态有所改进,所以如果我的信息是外的日期)

这对C ++中的泛型编程很有好处(当然不仅仅是sort函数):你可以达到相同的性能,在C中你必须放弃泛化(或者使用宏)

我的问题是:Idris可以做C ++在这里做的事吗?它可以内联用作参数的函数吗?

1 个答案:

答案 0 :(得分:1)

Idris确实支持通过注释机制对高阶函数进行部分评估。通过标记您希望在编译时{{1}}传递的参数,您可以将生成的程序专门化。

比照。 the manual了解更多详情。