为什么Haskell递归导入实例?为什么不只从指定模块导入所有实例?

问题描述 投票:1回答:1

摘自Haskell 2010年报告,第5.4节。 “仅当一系列导入声明导致包含该实例声明的模块时,实例声明才在范围内。”]]

我确实用一个简单的程序检查过,它确实递归地引入了作用域实例,即使它们不是直接位于导入的模块中。

为什么递归行为是理想的/必要的?如果仅将作用域all

包含在目标模块中的实例包含在[[only中,会很糟糕吗? (我不想导入一个特定的实例)。那真的会增加这么多进口吗?是否有一些根本/编译/历史上的原因无法通过这种方式进行?我目前的印象是,与孤儿实例有关的敌意很大一部分可能是基于那个前提,因为不良的风险是您无意中从某个深埋的模块中导入了不想要的孤儿。

摘自Haskell 2010年报告,第5.4节。 “并且仅当一系列导入声明导致包含该实例声明的模块时,实例声明才在范围内。”我确实检查过...

haskell import instance typeclass
1个回答
0
投票
我相信从这里Explicitly import instances的ehird的回答也提供了这个问题的答案。如果实例不是以递归方式导入的,则有可能实现与示例相同的效果。
© www.soinside.com 2019 - 2024. All rights reserved.