模块适用于 Cabal 但不适用于 Stack
Module works with Cabal but not with 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 最近也摆脱了这一点。)这有很好的理由:依赖“在某个时候我输入了这个命令”很快会导致维护问题和重复工作,一旦你尝试再次找出依赖关系运行 你的代码在另一台机器上。
因此,推荐的方法是总是在需要的地方提及依赖项。对于任何严肃的事情,您都可以在项目中使用 .cabal
(或 hpack)文件;对于较小的 one-file 东西,您可以将它们制作成 Stack scripts.
如果您根本没有任何文件,那么...好吧,首先,您可能需要考虑获取一个文件现在...但您也可以使用Stack global project,这是 stack ghci
默认使用的。
最后,您也可以直接在命令行中提及依赖项:stack ghci --package sbv
。
我真的不推荐这样做,除非您真的只是想快速尝试一些东西。
我正在尝试安装 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 最近也摆脱了这一点。)这有很好的理由:依赖“在某个时候我输入了这个命令”很快会导致维护问题和重复工作,一旦你尝试再次找出依赖关系运行 你的代码在另一台机器上。
因此,推荐的方法是总是在需要的地方提及依赖项。对于任何严肃的事情,您都可以在项目中使用 .cabal
(或 hpack)文件;对于较小的 one-file 东西,您可以将它们制作成 Stack scripts.
如果您根本没有任何文件,那么...好吧,首先,您可能需要考虑获取一个文件现在...但您也可以使用Stack global project,这是 stack ghci
默认使用的。
最后,您也可以直接在命令行中提及依赖项:stack ghci --package sbv
。
我真的不推荐这样做,除非您真的只是想快速尝试一些东西。