在Haskell中,低级别的东西如套接字、管道和文件IO是如何实现的呢?我猜这些IO方法在Haskell中并不是本地的,而是Haskell快速包装了一些低级别的C库,是吗?
您可以争论说,因为GHC的运行时系统是用C编写的,而您的操作系统可能也是用C编写的,所以Haskell是C的包装器,但这就像说Spyker C8汽车包裹了Audi V8发动机一样。如果您称他们可爱的C8是一个有Audi发动机的盒子,Spyker可能会感到不满。当您驾驶汽车时,您使用了发动机,但并非直接使用。有些人喜欢调整他们的汽车,就像有些人喜欢超频他们的CPU一样,但除非你想这样做,否则你不必这样做。有些人说,如果你想了解你的汽车,就应该知道发动机的工作原理。
如果您可以原谅F1的参考,那么Haskell主要是像Torro Rosso包装Ferrari一样“包装”C,但有时它像Maclaren包装Mercedes一样。(在您将Torro Rosso称为慢车之前,请将其与Ford进行比较。)