如何在Haskell的GHCi中导入MonadPlus类型类?
解决MonadPlus类型类的导入问题
我来帮你搞定这个导入问题!你遇到的错误是因为GHC默认不会自动加载你通过cabal install安装的第三方包模块,哪怕你已经成功安装了monadplus包。下面是具体的解决步骤:
方法一:在GHCi中手动指定包加载
启动GHCi的时候,加上包参数明确告诉它要加载monadplus包:
ghci -package monadplus
进入GHCi环境后,再执行import Control.Monad.Plus就能成功导入这个模块了。
方法二:在cabal项目中添加依赖配置
如果你是在一个cabal管理的项目里使用这个类型类,需要修改项目的.cabal配置文件,在build-depends字段中添加monadplus依赖:
build-depends: base >= 4.14 && < 5, monadplus >= 1.4
配置完成后,重新构建或启动项目的REPL(比如执行cabal build或cabal repl),此时GHC会自动处理依赖,你直接写import Control.Monad.Plus就可以正常使用了。
额外提示:区分标准库中的MonadPlus
需要注意的是,Haskell的base标准库中本身就包含一个MonadPlus类型类,它在Control.Monad模块下。如果你只需要基础的MonadPlus功能,完全不需要安装第三方的monadplus包,直接import Control.Monad就能使用标准库版本的类型类。只有当你需要第三方monadplus包提供的额外扩展功能时,才需要按照上面的步骤导入Control.Monad.Plus模块。
内容的提问来源于stack exchange,提问作者CoolSC
相关产品推荐
相关产品推荐

