关于Haskell的相互递归let-bindings和模块
Haskell支持相互递归的let-bindings,这是不错的。但Haskell不支持相互递归的模块,这有时很糟糕。我知道GHC有它的.hs-boot
机制,但我认为那有点像一个hack。
据我所知,支持透明的相互递归模块应该相对“简单”,而且它可以像相互递归的let-bindings一样被实现:不是将每个单独的模块作为编译单元,而是将模块依赖图中每个强连通分量作为编译单元。
我是否漏掉了什么?Haskell为什么不以这种方式支持相互递归模块呢?