Stackを使ったHaskellのインストール

  • 23
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

今までは、GHCを直接インストールして使っていたが、stackを使う方が簡単らしいので、導入方法についてまとめました。

Macの場合

brewで入れるのが簡単。

$ brew install haskell-stack

グローバルの設定を行う場合は、~/.stack/global-project/stack.yamlを開いて設定する。今回は、Haskellのバージョンを設定するresolverのところを最新版にしてみる。

resolverはLong-Term-Supportのバージョンで指定するのが一般的。例えば、次のようにする。

resolver: lts-5.17

あるいは、直接GHCのバージョンで指定してもOK

resolver: ghc-8.0.1

もしくは、最新版をビルドの日付で指定しても良い。

resolver: nightly-2016-06-01

ちなみに、stack.yamlの全体で次のようになる。

flags: {}
extra-package-dbs: []
packages: []
#extra-deps: []
extra-deps:
- pipes-http-1.0.2

#resolver: lts-5.17
#resolver: ghc-8.0.1
resolver: nightly-2016-06-01

(#から始まるのはコメント)

extra-depsは、特別に依存しているライブラリを入れる場合。通常はプロジェクトごとのstack.yamlで設定するので、グローバルのstack.yamlには入れなくて良い。

stack.yamlの設定ができたら、

$ stack setup

を一回実行する。

Windowsの場合

chocolateyで入れるのが簡単なようだが、試していない。
自分は、
https://github.com/commercialhaskell/stack/releases/
からWindows 64ビット版インストーラをダウンロードして実行した。

グローバルの設定は、

%USERPROFILE%\AppData\Roaming\stack\global-project\stack.yaml

を編集して行う。編集内容は、Macのときと同じ。

そして、コマンドプロンプトから

> stack setup

を実行すればOK

最初のアプリケーション

適当な作業ディレクトリに移動して

$ stack new app1

これで、app1ディレクトリが作成され、そこにアプリの雛形が作成される。
stack.yaml は、このアプリケーションで使う設定ファイル。Haskellのバージョンや読み込む外部ラリブリを設定出来る。
app1.cabal も、このアプリケーションで使う設定ファイル。ライブラリの依存性などを設定する。

今回は、設定は何も変更しない。最初に、一度buildを行う

$ stack build

(stack.yamlやapp1.cabalを変更したときも、stack buildを一度実行する)

app/Main.hsを編集する。今回は、何もモジュールを使わないので、次のようにする。

module Main where

main :: IO ()
main = print "Hello World!"

そして、実行

$ stack runghc app/Main.hs

"Hello World!"と表示されれば成功

追記

開発環境を充実させていくには、
http://qiita.com/td2sk/items/9e4b49a4a31b7138d3ad
に丁寧な説明がある。