top page > computer > haskell > web_lecture > for_programmer > whats_stack.html
更新日:
文責: 重城良国

stackとは

http://docs.haskellstack.org参照

GHCではライブラリやアプリケーションはパッケージにまとめられる。パッケージはcabalというツールで管理される。パッケージがすくなく楽園的だった時代はそれでよかった。パッケージがふえていきそれらのパッケージのバージョンもさまざまにアップデートされた。パッケージどうしの依存関係も複雑化していった。

あるパッケージBがパッケージAのバージョン1.0に依存している。バージョン2.0では動かない。逆にパッケージCはパッケージAのバージョン2.0に依存していてバージョン1.0では動かない。

おなじひとつのシステムでパッケージBとCを同時にいれるにはどうすればいいのだろうか。パッケージBのためにAのバージョン1.0をインストールした環境とパッケージCのためにAのバージョン2.0をインストールした環境とをつくり、それぞれ独立して運用する必要がある。stack以前ではそれを手作業で行った。つかうパッケージがふえていくにしたがってこのやりかたは手に負えなくなる。問題はパッケージどうしの依存関係にとどまらない。HaskellのコンパイラであるGHCのバージョンもパッケージごとに用意しなければならない。

stackはそのような専用の環境を自動的につくってくれる。GHCを直接導入するのではなく、まずはstackを導入したうえでそれをつかってGHCを導入するほうが問題なくHaskell環境をつくることができる。

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics