LoginSignup
30
33

More than 5 years have passed since last update.

Haskell開発環境の構築 (Windows編)

Last updated at Posted at 2015-07-18

はじめに

この記事では、以下二点を目標に話を進める。

  • Windows 上に最低限の Haskell 開発環境を構築する
  • Atom で ghc-mod による入力補完が使えるようにする

以下の点は扱わない。

  • cabal ファイルの書き方
  • stack の使い方

stack 導入

Haskell 環境構築のため、まずは stack を導入する。
stack は最近登場した Haskell のパッケージ管理/ビルドツール1で、色々便利なので入れておく。

GHC とライブラリの導入

導入は stack が自動でやってくれる。

  • 以下コマンドを実行
stack setup
  • 完了すると以下のようなメッセージが表示される。環境変数への追加は行わなくてもよい
Would add the following to PATH:
 C:\Users\<username>\AppData\Local\Programs\stack\x86_64-windows\ghc-7.8.4\bin;C:\Users\<username>\AppData\Local\Programs\stack\x86_64-windows\ghc-7.8.4\mingw\bin;C:\Users\<username>\AppData\Local\Programs\stack\x86_64-windows\git-2.4.5.1\cmd;C:\Users\<username>\AppData\Local\Programs\stack\x86_64-windows\git-2.4.5.1\usr\bin

プロジェクト作成

stack を使ってプロジェクトを作成する。

REM 作業ディレクトリに移動
cd workspace\sample

REM プロジェクトの作成
stack new

REM ビルド
stack build

REM 実行
stack exec new-template-exe

ghc-mod 導入

Haskell の高度な補完のため、 ghc-mod を導入する。

stack install cabal-install ghc-mod

ghc-mod のラッパー作成

ghc-mod などのツールは stack exec コマンド経由でのみ実行可能であり、このままでは Atom から認識できない。Atom から認識させるため、Haskell プラグイン自体を修正してもよいが、今回はラッパースクリプトを用意して対応する。

  • 以下のスクリプトをパスの通ったところに配置する。
ghc-mod.bat
@stack exec -- ghc-mod %*
ghc-mod-configure.bat
@FOR /F "usebackq" %%t IN (`stack path --snapshot-pkg-db`) DO @SET SNAPSHOT_DB=%%t
@FOR /F "usebackq" %%t IN (`stack path --local-pkg-db`) DO @SET LOCAL_DB=%%t
@FOR /F "usebackq" %%t IN (`stack path --bin-path`) DO @SET BIN_PATH=%%t
@SET PATH=%PATH%;%BIN_PATH::C:\=;C:\%
@cabal configure --package-db=clear --package-db=global --package-db=%SNAPSHOT_DB% --package-db=%LOCAL_DB%
  • プロジェクトの状態を更新する
    • cabal ファイル更新のたびに再実行が必要
REM 作業ディレクトリに移動
cd workspace\sample

REM 更新
ghc-mod-configure

Atom

以下のパッケージをインストールする

  • language-haskell
  • autocomplete-haskell
  • haskell-ghc-mod

スクリーンショット

atom-ghc-mod.png

課題

  • cabal ファイル変更時に stack build, ghc-mod-configure の再実行が必要
    • 忘れると Atom 上に大量のエラーが……
    • 自動化できそうだけど Windows のバッチファイル書きたくない

参考/関連


  1. Rubyist 向けにいうと、 stack ≒ rbenv + ruby-install + bundler + rake 

30
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
33