从unsafePerformIO开始,到RTS、libc或OSAPI结束,GHC如何实现IO?当标准前奏不可用时,我试图了解IO在Haskell中的工作方式(例如,如果我们出于某种原因自己实现标准前奏)。我原本希望在GHC的Haskell代码中找到对C函数的包装调用,但事实并非如此。unsafePerformIO建立在runRW#之上,这是沉重的魔法开始的地方,我们开始崩溃到Haskell中没有实现的函数和类型,而是内置到编译器中.runRW#似乎能够对现实世界的状态(即State#RealWorld)运行IO操作。尝试从另一个方向走,一直没有在RTS中找到落脚点。它似乎不包含我期望的