Idris 可以内联用作参数的函数吗?
Can Idris inline functions that are used as arguments?
在 C++ 中,如果您要编写自己的带有比较谓词参数的通用 sort
函数模板,那么编译器将能够内联该谓词。
C 中不是这种情况:qsort
被编译一次,它的比较谓词参数从不被内联(也许 compiler/linker 最近改进了,所以请纠正我如果我的信息已过时)
这是 C++ 泛型编程的福音(当然不仅仅是 sort
函数):您可以获得相同的性能,为此在 C 中,您将不得不放弃泛型(或使用宏)。
我的问题是:Idris 可以做 C++ 在这里做的事情吗?它可以内联用作参数的函数吗?
Idris 确实支持通过注释机制对高阶函数进行部分求值。通过标记您希望在编译时传递的参数 [static]
,您可以得到专门化的结果程序。
比照。 the manual了解更多详情。
在 C++ 中,如果您要编写自己的带有比较谓词参数的通用 sort
函数模板,那么编译器将能够内联该谓词。
C 中不是这种情况:qsort
被编译一次,它的比较谓词参数从不被内联(也许 compiler/linker 最近改进了,所以请纠正我如果我的信息已过时)
这是 C++ 泛型编程的福音(当然不仅仅是 sort
函数):您可以获得相同的性能,为此在 C 中,您将不得不放弃泛型(或使用宏)。
我的问题是:Idris 可以做 C++ 在这里做的事情吗?它可以内联用作参数的函数吗?
Idris 确实支持通过注释机制对高阶函数进行部分求值。通过标记您希望在编译时传递的参数 [static]
,您可以得到专门化的结果程序。
比照。 the manual了解更多详情。