2017-07-18 16 views
1

私はいくつかの無いプロジェクトとファイル、そして私のグローバル(またはローカルstack.yaml)でinteroを使用している:GHCiの/スタックとパッケージで提供

~/.stack/global 
$ cat stack.yaml 
flags: {} 
packages: [] 
extra-deps: [] 

resolver: lts-8.21 

I stack exec -- ghci:l Intero.hsIntero.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. 

を得る。しかし、私は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) 

表示されていないが、レンズは、lts-8.23の一部であり、完全なプロジェクトを作成せずにモジュールを簡単にロードするにはどうすればよいですか?

+0

パッケージをインストールしましたか?スタック装着レンズ。 –

+0

が動作します。ありがとうございました。あなたは答えとしてこれを置くことができます... lt 8.23のすべてを自動的に "インストール"する方法はありますか? – nicolas

答えて

1

パッケージは、それらが使用することができます前にインストール(ダウンロードしてコンパイル)する必要があります..それは簡単かもしれないが、私は、この全体のことがどのように機能するかについて非常に混乱しています:あなたが作業している場合

stack install lens 

(小さなものであっても良いアイデアである)Cabalizedプロジェクトは、カバールファイルにリストされている依存関係をインストールし、手動でインストールする必要はありません。

あなたのコメントに応じて:私は、技術的にすべての(いくつかのバージョンの)スタッカージをダウンロードしてインストールすることは可能だと思いますが、これは望ましくないようです。これは非常に時間がかかり、必要に応じてパッケージをインストールすることに比べてほとんど利点がありません。さらに、私はそれを行うための自動化された方法を知らない。私は、「オフラインハッキング」ストレージで面白い作業が行われたことを知っていますが、使用準備が整っていません。

+0

何ができるのかは、ネームスペースで利用可能なパッケージのインデックスを作成し、現在のファイル/プロジェクトに必要なものを調べることです。次に、最初のステップとして、パッケージを自動的にダウンロード/インストールします – nicolas

+0

なぜカバールファイルを作成しないのですか? –

+0

私は実際にそれをしました。それは "目標"を見つけることができないと言いました。 (いくつかのsntax snafuの後)...最終的には、スクリプトを実行したいだけで、すべての依存関係が指定されています。理想的には、それは直接動作するはずです。より高度なオプションを持っているのはいいですが、30秒で単純なものが動作するときは本当に好きです。もし私が毎日ハズケをしたら、私はそれらのことについて二度考えない。私が数ヶ月間数学をしてそれに戻ると、必然的に混乱します。 – nicolas

関連する問題