如何解决模块适用于Cabal,但不适用于Stack
我正在尝试安装sbv
模块https://hackage.haskell.org/package/sbv
使用Stack的安装效果很好(没有错误):
stack install sbv
但是我不能在stack ghci
中导入相应的模块:
import Data.SBV
-- <no location info>: error:
-- Could not find module ‘Data.SBV’
-- Perhaps you meant Data.Set (from containers-0.6.2.1)
现在,当我尝试使用Cabal时:
cabal new-install sbv --lib
一切都在ghci
上顺利进行
import Data.SBV
prove $ \x -> x `shiftL` 2 .== 4 * (x::SWord8)
--- Q.E.D. (<-- this is the expected output)
但是,stack ghci
仍然没有运气(与以前相同的错误)。无论stack install sbv
是在全局上还是在Stack项目的上下文中完成的,都是如此。
有没有办法使sbv
与Stack安装一起使用(即使它是通过cabal安装的)?
解决方法
Stack始终避免使用手动安装库的思想,然后可以将其导入该计算机上的文件中。 (Cabal最近也不再使用它了。)这有一个很好的理由:依靠“在某些时候我键入了此命令”很快会导致维护问题,并且一旦尝试,重复的工作就会再次找出依赖项在另一台计算机上运行代码。
因此,推荐的方法是始终在需要的地方提及依赖项。对于任何严重的问题,您都可以在项目中使用 steps {
dsl {
text('''job ("\$DISPLAY_NAME") {
wrappers {
preBuildCleanup {
preBuildCleanup()
}
}
steps {
shell("make fclean")
shell("make")
shell("make test")
shell("make clean")
}
}
(或hpack)文件。对于较小的一文件式文件,您只需将其设置为Stack scripts。
如果您根本没有任何文件,那么……首先,您可能要考虑获取文件 now ...,但是您也可以使用{{3 }},即.cabal
将被默认使用。
最后,您也可以直接在命令行中提及依赖项:stack ghci
。
我真的不建议这样做,除非您真的只是在快速尝试一些东西。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。