有些函数在OCaml中实现非常容易(例如从列表中的映射),但您可以使用OCaml库的List.map方法:
然而,我们会想知道哪个代码更有效。调用单独编译单元(库)的模块可能会使一些可能的优化失效。我在fa.caml新闻组中读到,当从库调用函数时,会使用闭包。
我有一个使用模块和函数子程序进行通用编程的OCaml代码。由于历史原因,我的代码是单块的:全部在一个文件中。现在我有更多时间,我愿意将代码分成文件以用于这些模块。但是,我担心会降低性能,因为我花了一段时间才弄清楚它。例如,我有用于用数字包装复杂对象的模块,因此我强制实现唯一表示和快速比较。我将这些包装对象与通用地图、集合一起使用,并在其上构建缓存。
问题是:
- 如果我转移到分离的文件中,我会失去性能吗?
- OCaml是否对我的充满模块、函数子程序等的代码进行了许多优化?
在C++中,如果在.h文件中定义类方法,编译器可能会内联短方法等。在OCaml中是否可以使用分离的文件实现这一点?