我尝试使用控制.Monad.Extra.andM https://hackage.haskell.org/package/extra-1.7.10/docs/Control-Monad-Extra.html
import Control.Monad.Extra (andM)
但有一个错误:
Could not find module ‘Control.Monad.Extra’
Perhaps you meant
Control.Monad.Catch (needs flag -package-key exceptions-0.10.4)
Control.Monad.Error (needs flag -package-key mtl-2.2.2)
Control.Monad.Except (needs flag -package-key mtl-2.2.2)not found
这个错误没有意义。
根据
https://cabal.readthedocs.io/en/3.6/installing-packages.html#installing-packages-from-hackage https://cabal.readthedocs.io/en/3.6/installing-packages.html#installing-packages-from-hackage
3.2.1.从 Hackage 安装软件包
cabal 工具还可以一步下载、配置、构建和安装 Hackage 包及其所有依赖项。为此,请运行:
$ cabal install [PACKAGE...]
要浏览可用软件包的列表,请访问 Hackage 网站。
上面写着“一步到位”,但根据我的经验,这太复杂了,实际上我不知道如何安装Control.Monad.Extra
.
通常,当 Haskeller 想要安装这样的特定库/包时,你该怎么做?似乎没有足够的文件。
如何在 Haskell 中安装库?
You don't.你应该只是depend然后让 Cabal 担心可能需要完成的任何安装。即,正如你所写
-
Go to the Hackage page and study which exact library to be used.
-
*.cabal
文件->build-depends: extra >=1.7.10
这是关键的一步。您自己的 Cabal 文件既可以指定现在需要哪些库,也可以确保将来一切仍然有效。该文件需要指定您需要的包以及您自己定义的模块。
也许你实际上并不需要>=1.7.10
,但具体一点也不会有什么坏处。标准做法 https://pvp.haskell.org/是同时添加下限和上限x.y
级别,即你会使用extra >=1.7 && <1.8
,然后随着新版本的出现而推动上限。可以说,这有点过于谨慎了。如果您只使用包中的一些简单工具,并且将来不太可能发生重大更改,那么将上边界排除在外可能会更方便。
-
$ cabal install extra
你已经指定了extra
您的项目需要,无需再次声明。相反,只需构建您的own现在项目。
$ cabal build
or, to get a GHCi prompt with your modules,
$ cabal repl
or, if you have an executable with a main
that you wish to execute
$ cabal run
or if you want to install that executable (and only then)
$ cabal install
Cabal will then automatically figure out that extra-1.7.10
should be installed first.
(在旧的 Cabal 中,仍然需要运行cabal install --dependencies-only
first.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)