我无法理解 Haskell (GHC) 如何编译程序,以及这些程序是如何运行的。
- GHC 是用 Haskell 编写的非平凡程序的典型示例。但是,GHC 的某些部分似乎不是用 Haskell 编写的,即运行时环境(C/C--)。这是为什么?性能原因?(我知道这个网站和它的朋友,但不能理解他们。)
- 说到运行时环境:为什么编译语言需要一个?编译的程序不应该是机器代码而没有别的吗?据我了解,运行时环境有点类似于虚拟机或字节码解释器,它处理某种形式的元代码并在此基础上进行实际计算。那么:GHC 运行时到底做了什么,为什么它首先是必要的?
- 关于 FFI:如何处理 C 调用?最初,我认为使用 FFI 会生成一个可执行文件,其中 Haskell 和 C 编译在一起。但是,我多次读到 GHC 程序会从程序中调用 C 函数。这对于理解 FFI 在并行编程方面的问题尤其重要。那么:FFI 函数与普通 Haskell 函数有何不同?