💡

さくっとHaskellの開発環境を整える(Stack)

2022/10/18に公開

Qiitaより転載
2016/8/27 初投稿

始めて投稿してからもう6年経ってるので、これ動くかは分からないです…
一応 44 Like / 36 Stock されていたので転載していますが、動かなければご連絡いただければ修正いたします(自主的にまたHaskellをやる気が無い…)


Windows で Haskell 環境構築(Stack)
Stackでやる最速Haskell Hello world! (GHCのインストール付き!)
これを参考にしてたけど今は変わってるらしいので1から書いておく。

2017/7/24 Windows解説を最新に更新。

環境

  • Windows 10
  • Mac OS X El Capitan

WindowsにStackを導入する

まずはWindowsから。

  1. 以下から最新のStackをダウンロードしてくる。(現段階の最新版はv1.5.0)
  1. stack-1.5.0-windows-x86_64-installer.exeをダウンロード(64bit版は無い模様)。
  2. インストールする。Pathとかは通さなくても自動でやってくれる模様。
  3. 完了後、cmd.exeを開いてstackと打っていろいろ出てくればOK。

GHCのインストール

ビルドにはGHCなるものが必要らしい。これもstackの機能で用意されている。

stack setup

上記を実行でインストールが開始される。
僕の貧弱ノートだとそこそこ時間かかったのでその間コーヒーでも飲んで待ちましょう。

終わるとCAUTIONとか危なそうな表示になるけど、cmd.exeを再起動してね、ってだけなので再起動する。

Stackで新しいプロジェクトを作成

  1. とりあえず任意の場所に新しいプロジェクト用のフォルダを作成。
  • 僕はいつもC:\workspace\の下にプロジェクトを作っているので、HaskellTestというフォルダを作成。
  1. cmd.exeでcd C:\workspace\HaskellTest\と打って、以下を実行。
stack new haskellTest

haskellTestは今回のプロジェクト名。
実行が終わるとC:\workspace\HaskellTest\の下にhaskellTestというフォルダが生成される。

ビルドしてみる

初期に入ってるのはいわゆる空プロジェクトなので、Hello Worldにする。
参考)Stackでやる最速Haskell Hello world! (GHCのインストール付き!)
いわゆるmain関数はhaskellTest\appに入っているMain.hs
main関数は以下のようになっている

Main.hs
module Main where

import Lib

main :: IO ()
main = someFunc

僕はまだHaskellを知らないので、上を解説できませんが、どうやらmain = someFuncがMainの中身らしい。
someFuncはhaskellTest\src\Lib.hsにある。Lib.hsの中身は以下。

Lib.hs
module Lib
    ( someFunc
    ) where

someFunc :: IO ()
someFunc = putStrLn "someFunc"

この"someFunc"を"Hello, World!"に書き換えて準備完了。

ビルドには以下のコマンドで実行可能。

cd C:\workspace\HaskellTest\haskellTest
stack build

ビルドしたファイルの実行

どういう仕組みかわかんないけど、

stack exec 指定したプロジェクト名-exe

で実行できるらしい。上のサンプルだと以下のように実行する。

stack exec haskellTest-exe

これでHello, World!が表示されます。

MacにStackを導入する

  1. 以下から最新のStackをダウンロードしてくる。(現段階の最新版はv1.1.2)
  1. ダウンロードした.tar.gzを解凍して任意の場所に移動する。

Pathを通す

Mac版はインストール版が無かったのでPathを自分で設定する。
まずは.bash_profileを開く

  • まずはルートに戻る。以下で戻れる。
$ cd
  • .bash_profileを開く
$ sudo vi .bash_profile
  • キーボードのiを押して編集モードにして、以下を追加する
PATH=$PATH:stackのフォルダのパス
export PATH
  • :wqで保存して閉じる
  • 以下を実行してPathを適用する
$ source ~/.bash_profile

以上でPathが通りました。$ stackと書いて色々表示されればOK

後はWindowsと同じだぜ!

エラーと対処法

コンパイラが見つからないぜ?!

No compiler found, expected minor version match with ghc-8.0.2 (x86_64) (based on resolver setting in C:\sr\global-project\stack.yaml).
To install the correct GHC into C:\Users\ichi-dohi\AppData\Local\Programs\stack\x86_64-windows\, try running "stack setup" or use the "--install-ghc" flag.
  • stack setup --install-ghcで解決

Discussion