Functional programming 如何在Scheme中使用声明(类型、内联、优化)?
如何声明参数的类型以避免类型检查 我如何优化速度以告诉编译器尽可能快地运行函数,如(优化速度(安全0)) 如何在Scheme中生成内联函数 如何使用数据对象的非固定表示 最后,这些是重要的还是必要的?我可以依靠我的编译器来进行这些优化吗 谢谢, 昆詹Functional programming 如何在Scheme中使用声明(类型、内联、优化)?,functional-programming,scheme,racket,Functional Programming,Scheme,Racket,如何声明参数的类型以避免类型检查 我如何优化速度以告诉编译器尽可能快地运行函数,如(优化速度(安全0)) 如何在Scheme中生成内联函数 如何使用数据对象的非固定表示 最后,这些是重要的还是必要的?我可以依靠我的编译器来进行这些优化吗 谢谢, 昆詹 你不能用任何便携式的方式做这些 您可以使用宏获得“某种”内联,但几乎总是尝试这样做。编写Scheme(或任何其他语言)编译器的人通常比您更好地决定何时最好内联函数 不能将值取消装箱;一些Scheme编译器会将其作为一种优化,但不会以任何可见的方式进
如果要帮助编译器,请考虑在可能的情况下减少顶层定义。 如果编译器在顶层看到一个函数,它很难猜测程序如何使用或修改该函数。 如果函数是在使用它的函数的范围内定义的,那么编译器的工作就会简单得多
Chez方案手册中有一节介绍了这一点: 显然,Chez是最快的方案实现之一。如果它需要这种“指导”来进行良好的优化,我怀疑其他实现也离不开它(或者它们只是一起忽略它)