さくっとHaskellの開発環境を整える(Stack)
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から。
- 以下から最新のStackをダウンロードしてくる。(現段階の最新版はv1.5.0)
-
stack-1.5.0-windows-x86_64-installer.exe
をダウンロード(64bit版は無い模様)。 - インストールする。Pathとかは通さなくても自動でやってくれる模様。
- 完了後、cmd.exeを開いて
stack
と打っていろいろ出てくればOK。
GHCのインストール
ビルドにはGHCなるものが必要らしい。これもstackの機能で用意されている。
stack setup
上記を実行でインストールが開始される。
僕の貧弱ノートだとそこそこ時間かかったのでその間コーヒーでも飲んで待ちましょう。
終わるとCAUTIONとか危なそうな表示になるけど、cmd.exeを再起動してね、ってだけなので再起動する。
Stackで新しいプロジェクトを作成
- とりあえず任意の場所に新しいプロジェクト用のフォルダを作成。
- 僕はいつも
C:\workspace\の
下にプロジェクトを作っているので、HaskellTestというフォルダを作成。
- 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関数は以下のようになっている
module Main where
import Lib
main :: IO ()
main = someFunc
僕はまだHaskellを知らないので、上を解説できませんが、どうやらmain = someFunc
がMainの中身らしい。
someFuncはhaskellTest\src\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を導入する
- 以下から最新のStackをダウンロードしてくる。(現段階の最新版はv1.1.2)
- ダウンロードした.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