【发布时间】:2016-04-27 05:05:49
【问题描述】:
我有兴趣了解有关 Haskell 如何编译为本机代码的更多信息。我知道 Haskell 是静态类型检查的,这就是您可能不想这样做的原因。但有可能吗?
【问题讨论】:
-
为什么静态类型检查会阻止人们编写 JIT?事实上,JIT 静态类型语言比动态类型语言更容易。
-
JIT 编译器只是您经常运行的常规编译器 :)。
-
@TheParamagneticCroissant 嗯,静态类型检查语言的全部意义在于它在编译时进行类型检查,对吧?据我了解,JIT 编译器会在运行时将源语言编译为本机代码。但这不会破坏静态类型检查的意义吗?也许我错过了一些基本的东西。
-
请注意,我说的是我将 .hs 编译为本机代码的情况,而不是 .hs -> 字节码/某些 IR。在后一种情况下,我了解静态类型检查的好处将如何发挥作用。
-
可能吗?当然。你也可以用 C 或 C++ 做同样的事情……JIT 的优点是在编译时可以利用一些运行时信息,例如:哪些代码段运行得更频繁,代码流的平均情况如何,正在使用哪些数据及其平均大小/寿命等。这有助于执行优化。 JIT 对于动态类型语言来说是一件事情,因为您可以利用运行时类型信息,但是如果您已经先验地拥有了这些信息,那么您就少了一件需要担心的事情。
标签: haskell compiler-construction jit