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

Haskell 環境構築 メモ

More than 1 year has passed since last update.

はじめに

有名なHaskell入門書「すごいHaskellたのしく学ぼう」を読みました。
本を読んだらコードを書こう!ということでHaskellの開発環境を整えます。
この記事は開発環境を整える上での作業メモです。

基本的にはQiita: vscode と haskell-ide-engine で Haskell 開発環境を構築するを参考にさせていただきました。

環境

  • macOS バージョン 10.14

Stackのインストール

Stackとは何か?についてはQiita: Haskellのビルドツール"stack"の紹介が分かりやすいと思います。

# brewを利用してstackをインストールする
$ brew install haskell-stack

# バージョン確認
$ stack --version 
1.9.3 x86_64

# 更新
$ stack update

Stack経由でインストールしたライブラリなどは、~/.local/bin/以下に保存されるので、~/.local/binにパスを通して置く必要があります。
見落として手順すっ飛ばしてしばらくハマりました
忘れずにパスを通しましょう。
僕はfish shellを使っているので、以下を設定ファイルに追記しました。

# ~/.config/fish/config.fish
set PATH ~/.local/bin $PATH

GHCのインストール

デフォルトで使用するGHCのバージョンを変更します。
~/.stack/global-project/stack.ymlを開いて、resolverの部分を以下のように書きました。

resolver: lts-12.24

resolverとはStackageのsnapshotのことです。
Stackageとは、依存関係で苦しまないよう調整されたパッケージの集合(snapshot)のようです。

Stackage Server
スナップショットのバージョンは上記から確認できます。
どれを選べばよいのか正直わからなかったので、とりあえずlts(Long Term Support)がついてるものの中から新しめなものを適当に選びました。

設定ファイルを書き換えた上でインストールを行ないます。

# stack.ymlにしたがってGHCをインストールする
$ stack setup

# バージョン確認
# stack経由でghcにオプションを渡す場合は -- を挟む
$ stack ghc -- --version
The Glorious Glasgow Haskell Compilation System, version 8.4.4

haskell-ide-engineのインストール

次にhaskell-ide-engineをインストールします。

# hieのソースコードをダウンロード
$ git clone https://github.com/haskell/haskell-ide-engine --recursive
$ cd haskell-ide-engine

# GHC 8.4.4用でインストール(時間かかりました。)
$ make hie-8.4.4
$ make build-doc-8.4.4

# バージョン確認
$ hie --version
Version 0.4.0.1, Git revision 5b8cfbc59fc4f1913dffd0f8c68e567cb046ca2d (2273 commits) x86_64 ghc-8.4.4

VS Codeのインストール

最後にVS Codeをインストールします。
Visual Studio Code
ここでは1.30.0をインストールしました。

起動後EXTENSIONSからHaksell Laguage Serverをインストール。
VS Codeを再起動して作業完了です。

実際に使ってみた感想

コードはまだちょっとしか書けてないですが、補完も早くていい感じです。
最初ちょっとだけ躓いたのが、自動補完などのhieの機能は、ファイルをVS Codeで開いた時点で構文エラーが存在する場合には効かないようです。(そういうものなのか、環境依存の問題なのかわかりませんが…)
インストールできたはずなのにhieが動かない!という場合には、構文エラーが無いシンプルなファイルで試してみるといいかもしれません。

参考

1ain2
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