Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

今までは、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
に丁寧な説明がある。

2018/04/24追記

GHSとバージョンの対応はこちらを参照
https://wiki.haskell.org/Base_package

KNaito
I love JavaScript, Html, PHP, Python, Java, Ruby, Perl, C, C++, Objective-C and Haskell. My stack overflow address is http://stackoverflow.com/users/3535002/knaito
http://d.hatena.ne.jp/knight_9999/
asial
開発中に体験した技術についての情報をつづります
http://www.asial.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした