Stack
Haskellのビルドツール
Haskellでプロジェクトの作成やビルドをする
docs
設定ファイル
stack.yaml
Stackの追加の構成を記述する
package.yaml
追加のlibararyの指定などは.cabalではなく、package.yamlに書く
package.yamlを削除して、.cabalに書くのもあり
パッケージ管理
Stackageでpackageのversionを探すをしてからversionを特定して、
package.yamlのdependencies、
もしくは.cabalのbuiild-depends
に追記する
Haskell製のツールのPCへの導入
$ stack install
コマンドになる
buildして実行
λ stack build
λ stack exec hoge-exe
hoge-exeがコマンドライン引数を取る場合は
$ stack exec -- hoge-exe --hogehoge
https://docs.haskellstack.org/en/stable/GUIDE/#stack-exec
このhoge-exeをスマートにhogeとかにする方法 ref
コマンド
λ stack run
buildして実行
https://haskell.e-bigmoon.com/posts/2018/06-25-stack-run.html
λ stack build
$ stack ghci
package.yamlのexecutablesのmainが読み込まれる #??
λ stack new <project>
$ stack init
プロジェクトをテンプレ無しで新規作成
$ stack install
プロジェクトをビルドしてlocalのbinにインストール
つまり自分で作ったプロジェクトが、$ hogeとかで実行できるようになる
PATHが通っていれば
$ stack update
λ stack runghc
λ stack clean
λ stack setup
stack test
stack upgrade
stack自身のupgrade
λ stack ghc
$ stack hoge.hs
1つのファイルをscript的に実行
stack.yaml.lockファイルとは
https://docs.haskellstack.org/en/stable/lock_files/
エラー
ghcide compiled by GHC 8.8 failed to load packages: <command line>: cannot satisfy -package ..
Please ensure that ghcide is compiled with the same GHC installation as the project.cra
とりあえす$ stack buildしたらなおった
.cabalと比較して良いところ
つまりhpack(Haskell)の良いところか
#??
2020/2/23になってメジャーバージョンが上がったせいか、$ stack new hogeが失敗するようになった
code:error
Downloading lts-15.1 build plan ...
RedownloadInvalidResponse Request {
host = "raw.githubusercontent.com"
port = 443
secure = True
requestHeaders = []
path = "/fpco/lts-haskell/master//lts-15.1.yaml"
queryString = ""
method = "GET"
proxy = Nothing
rawBody = False
redirectCount = 10
responseTimeout = ResponseTimeoutDefault
requestVersion = HTTP/1.1
}
本質的な修正の仕方はわからないが、既にあるstackageのバージョンを指定して耐えた
$ stack init --resolver=nightly-2019-01-28
参考
Haskell: Build Tools :: Kowainik
Haskell Stack とは何をするツールなのか - Qiita
本気で Haskell したい人向けの Stack チュートリアル - Qiita
http://tune.hateblo.jp/entry/2015/07/13/034148
https://qiita.com/tanakh/items/1ca4ba9e1f5006a30106