如果只使用堆栈,如何取消隐藏包?

jaz*_*mit 6 haskell haskell-stack

我想试试Writerghci中的monad.正如这里所建议的,我试图只使用堆栈来管理GHC和包,并避免全局安装.

从一个全新的Ubuntu 15.04安装,安装堆栈后:

stack setup
mkdir lyah && cd lyah
stack new
stack install mtl
stack ghci
ghci> import Control.Monad.Writer
Could not find module ‘Control.Monad.Writer’
It is a member of the hidden package ‘mtl-2.1.3.1’.
Run Code Online (Sandbox Code Playgroud)

我知道pre-stack ghc-pkg用于显示/隐藏包,但我不知道如何继续"取消隐藏"mtl包.

dup*_*ode 12

编辑stack new创建的.cabal文件并添加mtl到该build-depends部分.该部分文件应如下所示:

build-depends:       base >= 4.7 && < 5
                   , mtl
Run Code Online (Sandbox Code Playgroud)

然后,做一个stack build之前stack ghci.

顺便说一句,不要使用stack install安装库 - 它只是复制二进制文件的快捷方式.例如,stack install hlint首先构建包,然后将生成的二进制文件复制到〜/ .local/bin /.相反,始终将包添加到.cabal文件中,如上所示,并使用stack build它们以便安装它们.