我安装了Diagrams,一切都很好。
>cabal install diagrams
Resolving dependencies...
All the requested packages are already installed: diagrams-1.2
Use --reinstall if you want to reinstall anyway.
但如果我尝试使用它:import Diagrams.Prelude
Could not find module `Diagrams.Prelude'
Use -v to see a list of the files searched for.
和
>ghc-pkg list diagrams
WARNING: there are broken packages.
Run 'ghc-pkg check' for more details.
e:/Plang/Haskell Platform\lib\package.conf.d:
(no packages)
C:\Users\guthrie\AppData\Roaming\ghc\i386-mingw32-7.8.3\package.conf.d:
(no packages)
(破损的软件包都是安装了较新版本的旧版本。)
它似乎安装在.cabal-sandbox中,但ghc-pkg(?)没有报告:
C:\Users\guthrie\.cabal-sandbox\i386-windows-ghc-7.8.3-packages.conf.d
\图表...
据我所知,我可以使用“cabal repl”代替GHCi,它会在路径中添加额外的软件包库引用,但我想使用其他Haskell IDE(Heat,Leksah)中安装的这些库。
我不确定这个沙箱是否是以前无法正常工作的cabal-install的补充,或者如果新的cabal版本(1.22)自动使用它们,或者......
我发现使用“cabal exec ghc”可能会解决这个问题,但我尝试过了,虽然我自己设置了明确的路径,但我找不到合适的用法:
-- Good:
ghc --make Program.hs -package-db=c:\users\name\.cabal-sandbox\i386-windows-ghc-7.8.3-packages.conf.d\
-- Fails:
cabal ghc --make Program.hs
目前的IDE也没有此选项。我是否必须将指向此目录( -package-db = )的命令行选项添加到使用GHC的所有其他工具?这是正确的做法吗?
答案 0 :(得分:1)
通常,调用cabal / GHC的IDE和其他工具需要知道沙箱,并且根据是否存在沙箱而行为有点不同。我无法与Leksah交谈,但对于emacs,了解CLI方式可以更轻松地设置IDE。
与沙箱相关的ghci
等效值为cabal repl
。
与沙箱相关的ghc-pkg
等效值为cabal sandbox hc-pkg
。
您想要构建的图表可能是值得的。我知道这对于仅依赖于diagrams-lib
的单个Haskell文件来说似乎有些过分。我发现创建.cabal
文件(或将可执行部分添加到公共my-diagrams.cabal
)所花费的时间比找出如何制作所有工具(emacs haskell-mode,ghc-mod, hslint,GHC)在构建非cabalized文件的同时从沙箱中获取包。