我想试试ghci中的Writer
monad。正如here所述,我尝试仅使用堆栈来管理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’.
我知道pre-stack ghc-pkg用于显示/隐藏包,但我不知道如何继续“取消隐藏”mtl包。
答案 0 :(得分:12)
修改已创建的.cabal文件stack new
,并将mtl
添加到build-depends
部分。该部分文件应如下所示:
build-depends: base >= 4.7 && < 5
, mtl
然后,在stack build
之前执行stack ghci
。
顺便说一下,不要使用stack install
来安装库 - 它只是复制二进制文件的快捷方式。例如。 stack install hlint
将首先构建包,然后将生成的二进制文件复制到〜/ .local / bin / 。相反,始终将包添加到.cabal文件中,如上所示,并使用stack build
以便安装它们。
答案 1 :(得分:0)
由于您正在使用GHCi,因此您只需更改传递给基础GHC的命令行即可。例如,我最近这样做:
Prelude> import qualified GI.Gtk as Gtk
<no location info>: error:
Could not load module ‘GI.Gtk’
It is a member of the hidden package ‘gi-gtk-3.0.31’.
Perhaps you need to add ‘gi-gtk’ to the build-depends in your .cabal file.
It is a member of the hidden package ‘gi-gtk-3.0.27’.
Perhaps you need to add ‘gi-gtk’ to the build-depends in your .cabal file.
Prelude> :set -package gi-gtk-3.0.27
package flags have changed, resetting and loading new packages...
Prelude> import qualified GI.Gtk as Gtk
Prelude Gtk>
答案 2 :(得分:0)
只是为了补充@Jazmit 的回答。请注意,您的 .cabal
文件将包含两个 build-depends
部分。一个低于 library:
另一个在 executable my-project-exec
下。在这种情况下,您需要将模块放在 executable
部分下。
示例:
my-project.cabal
library:
build-depends:
...
executable my-project-exe:
build-depends:
base >= 4.7 && < 5
, mtl
有关库和可执行文件的更多信息,请查看文档: https://cabal.readthedocs.io/en/latest/developing-packages.html#editing-the-cabal-file
答案 3 :(得分:0)
如果您使用的是 #df is a DataFrame object
df.to_csv('out.csv')
,请尝试将您的包定义添加到 stack
中的 dependencies
字段以将其公开到您的项目中。
package.yaml
那么,dependencies:
- mtl