即使在合格导入后出现"不明确的发生"错误

Vla*_*ala 4 haskell

这是我的代码片段:

import Control.Monad.State as S
get x = x + 1
Run Code Online (Sandbox Code Playgroud)

现在如果我尝试使用get,我会收到以下错误:

Ambiguous occurrence `get'
It could refer to either `Main.get', defined at twitter.hs:59:1
                      or `S.get',
                         imported from Control.Monad.State at twitter.hs:15:1-31
Run Code Online (Sandbox Code Playgroud)

由于我Control.Monad.State作为合格模块导入,不应该自动选择该get功能Main吗?为什么会遇到这种冲突?我该如何解决?

Cat*_*lus 11

你需要使用import qualified Control.Monad.State as S.跳绳qualified关键字带来成规模都S.getget等.

如果import声明使用了qualified关键字,则只qualified将实体的名称放入范围.如果省略了合格的关键字,然后合格实体的非限定名称被带入范围.

参见Haskell 2010报告的 5.3.2和5.3.4 .