我对Haskell(GHC)如何编译程序以及如何运行这些程序感到困惑。
- GHC是Haskell中非常重要的一个程序示例。然而,GHC的部分内容似乎并不是用Haskell编写的,即运行时环境(用C/C--编写)。这是为什么?出于性能方面的考虑吗?(我知道这个网站和相关信息,但不能理解太多。)
- 说到运行时环境:为什么一个“编译语言”需要它?编译后的程序不应该只是机器码吗?据我所知,运行时环境有点像虚拟机或字节码解释器,处理某种形式的元代码,并根据其进行实际计算。因此:GHC运行时环境确切地做了什么,为什么它首先是必需的?
- 关于FFI:如何处理C调用?最初,我认为使用FFI会生成一个包含Haskell和C编译在一起的单个可执行文件。然而,我读过多次,GHC程序似乎从程序中调用了C函数。这对于理解FFI在并行编程方面存在的问题尤为重要。那么:FFI函数与普通的Haskell函数有何不同?