如何在Scheme中使用声明(类型,内联,优化)?

unj*_*nj2 3 scheme functional-programming racket

如何声明参数类型以规避类型检查?

如何优化速度以告诉编译器尽可能快地运行该功能(优化速度(安全0))?

如何在Scheme中创建内联函数?

如何使用数据对象的未装箱表示?

最后这些是重要还是必要的?我可以依赖我的编译器来进行这些优化吗?

谢谢,kunjaan.

Eli*_*lay 5

  1. 你不能以任何便携的方式做任何这些.
  2. 你可以使用宏来进行"某种"内联,但几乎总是尝试这样做.编写Scheme(或任何其他语言)编译器的人在决定何时最好内联函数时通常比你好得多.
  3. 您不能将值取消装箱; 一些Scheme编译器会将其作为优化,但不以任何可见的方式(因为它一个优化 - 所以它应该保留语义).
  4. 至于你的上一个问题,答案是非常主观的.有些人在不知道某些功能使用了多少CPU周期的情况下无法入睡.有些人并不关心并且相信编译器能够合理地优化事物.至少在您更多地是语言学生而不是实施者的阶段,最好坚持使用后者.