我使用intero和一些没有项目的文件,我的全局(或本地stack.yaml)是:
~/.stack/global
$ cat stack.yaml
flags: {}
packages: []
extra-deps: []
resolver: lts-8.21
如果我stack exec -- ghci
和:l Intero.hs
包含Intero.hs
:
$ cat Intero.hs
module Intero where
import Control.Lens.Lens
我明白了:
$ stack exec -- ghci
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /Users/nrolland/.emacs.d/.ghci
Prelude
λ> :l Intero.hs
[1 of 1] Compiling Intero ( Intero.hs, interpreted )
Intero.hs:3:1: error:
Failed to load interface for ‘Control.Lens.Lens’
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
我重新启动了-v:
$ stack exec -- ghci -v
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Glasgow Haskell Compiler, Version 8.0.2, stage 2 booted by GHC version 7.10.3
Using binary package database: /Users/nrolland/.stack/programs/x86_64-osx/ghc-8.0.2/lib/ghc-8.0.2/package.conf.d/package.cache
Using binary package database: /Users/nrolland/.stack/snapshots/x86_64-osx/lts-8.23/8.0.2/pkgdb/package.cache
Using binary package database: /Users/nrolland/Sync/clones/haskGist80/.stack-work/install/x86_64-osx/lts-8.23/8.0.2/pkgdb/package.cache
loading package database /Users/nrolland/.stack/programs/x86_64-osx/ghc-8.0.2/lib/ghc-8.0.2/package.conf.d
loading package database /Users/nrolland/.stack/snapshots/x86_64-osx/lts-8.23/8.0.2/pkgdb
loading package database /Users/nrolland/Sync/clones/haskGist80/.stack-work/install/x86_64-osx/lts-8.23/8.0.2/pkgdb
wired-in package ghc-prim mapped to ghc-prim-0.5.0.0
加载Intero.hs
时,我得
Intero.hs:3:1: error:
Failed to load interface for ‘Control.Lens.Lens’
Locations searched:
Control/Lens/Lens.hs
Control/Lens/Lens.lhs
Control/Lens/Lens.hsig
Control/Lens/Lens.lhsig
Upsweep partially successful.
*** Deleting temp files:
Deleting:
Failed, modules loaded: none.
loading package database /Users/nrolland/.stack/programs/x86_64-osx/ghc-8.0.2/lib/ghc-8.0.2/package.conf.d
loading package database /Users/nrolland/.stack/snapshots/x86_64-osx/lts-8.23/8.0.2/pkgdb
loading package database /Users/nrolland/Sync/clones/haskGist80/.stack-work/install/x86_64-osx/lts-8.23/8.0.2/pkgdb
wired-in package ghc-prim mapped to ghc-prim-0.5.0.0
wired-in package integer-gmp mapped to integer-gmp-1.0.0.1
wired-in package base mapped to base-4.9.1.0
wired-in package rts mapped to rts-1.0
wired-in package template-haskell mapped to template-haskell-2.11.1.0
wired-in package ghc mapped to ghc-8.0.2
wired-in package dph-seq not found.
wired-in package dph-par not found.
但镜头是lts-8.23的一部分,虽然当我在ghc-pkg
中查找时,我看不到它
$ stack exec -- ghc-pkg list
/Users/nrolland/.stack/programs/x86_64-osx/ghc-8.0.2/lib/ghc-8.0.2/package.conf.d
Cabal-1.24.2.0
array-0.5.1.1
base-4.9.1.0
binary-0.8.3.0
bytestring-0.10.8.1
containers-0.5.7.1
deepseq-1.4.2.0
directory-1.3.0.0
filepath-1.4.1.1
ghc-8.0.2
ghc-boot-8.0.2
ghc-boot-th-8.0.2
ghc-prim-0.5.0.0
ghci-8.0.2
haskeline-0.7.3.0
hoopl-3.10.2.1
hpc-0.6.0.3
integer-gmp-1.0.0.1
pretty-1.1.3.3
process-1.4.3.0
rts-1.0
template-haskell-2.11.1.0
terminfo-0.4.0.2
time-1.6.0.1
transformers-0.5.2.0
unix-2.7.2.1
xhtml-3000.2.1
/Users/nrolland/.stack/snapshots/x86_64-osx/lts-8.23/8.0.2/pkgdb
(no packages)
/Users/nrolland/Sync/clones/haskGist80/.stack-work/install/x86_64-osx/lts-8.23/8.0.2/pkgdb
(no packages)
如何在不创建完整项目的情况下轻松加载模块? 这可能很容易,但我对这件事情如何运作感到非常困惑。
答案 0 :(得分:1)
必须先安装(下载和编译)软件包才能使用它们:
stack install lens
如果您正在使用Cabalized项目(即使对于小东西也是一个好主意),堆栈将安装您的cabal文件中列出的依赖项,因此您不必手动安装它们。
回应你的评论:我认为技术上可以下载并安装所有(某些版本的)stackage,但这似乎不太可取。这将花费相当长的时间,并且在需要时安装包装几乎没有任何好处。此外,我不知道这是一种自动化的方式。我知道在“离线hackage”存储方面已经做了一些有趣的工作,但它还没有准备好使用。