HaskellをIntelliJで使えるようになりました!


intellij-haskellというプラグインを使って、効率よく開発ができるようになりました!!

環境

Ubuntu 16.04LTS
mac OS Sierra

手順

  1. stackをインストール
  2. IntelliJをダウンロード
  3. プラグイン「IntelliJ-Haskell」をインストール
  4. Create New Projectをクリックし、Haskell moduleを選択。さらに、Configureをクリックし、stackのパスを入力する。

1. stackをインストール

wget -qO- https://get.haskellstack.org/ | sh

を実行すれば、stackが自動でインストールされると思います。(詳しくは、stackの公式サイトをご覧ください。)
stackの概要については、こちらの記事をご覧になると詳しく知ることができると思います。

2. IntelliJをダウンロード

https://www.jetbrains.com/idea/
からダウンロードできます。(公式サイト)

3. プラグイン「IntelliJ-Haskell」をインストール

  1. File -> Project を選択
  2. Pluginを選択し、Brows repositories... を選択
  3. IntelliJ-Haskellをインストール

インストールできたら、IntelliJを再起動する。

4. Create New Projectをクリックし、Haskell moduleを選択。さらに、Configureをクリックし、stackのパスを入力する。

僕のubuntuの環境では、/home/[ユーザ名]/.local/bin/stack としました。

macの環境では、/usr/local/bin/stack でいけました。

エラーが出た時

私のmac環境で以下のエラーが出ました。

Something went wrong while calling hlint. Error: No compiler found, expected minor version match with ghc-8.0.2 (x86_64) (based on resolver setting in /Users/v97ug/dev/haskell/free-game/TestHaskell3/stack.yaml). To install the correct GHC into /Users/v97ug/.stack/programs/x86_64-osx/, try running "stack setup" or use the "--install-ghc" flag. To use your system GHC installation, run "stack config set system-ghc --global true", or use the "--system-ghc" flag.

どうやらGHCが入っていなかったようで、

stack setup --install-ghc

を実行すると、無事プラグインが動作しました。

既存のstackのプロジェクトを読み込む場合の注意

Openで開くのではなく、Import Projectで開くと上手く読み込んでくれます。

他に僕が気づいたこと

  • IntelliJ内で、実行ができない模様(できる方がいましたら教えてください!) 追記:実行できました!!次の記事がとても参考になります。 IntelliJでHaskellを実行する(haskell stackプロジェクト)
  • New Projectでプロジェクトを作成して、コマンドラインでstack execしようとすると、パスがないなどのエラーが発生する。(最初に、コマンドラインでstack newしてから、Import ProjectでIntelliJに取り込んだほうがいいと思われる) 追記:stack exec プロジェクト名で実行できます。このとき、プロジェクト名-exeとはせずに、プロジェクト名とすればできます。
  • asパターンでかいた変数を、なぜかリファクタリングできない。

IntelliJを使う利点

  • リファクタリングができる!(関数名などを一括で変更できる)
  • type signatureを自動で出してくれる。(type signatureを書いていない時に、alt+Enterを押す)
  • 静的解析してくれる。
  • moduleを作る時、先頭が小文字のmodule名だと、エラーが出るようになる。

あとがき

以前はatomでHaskellの開発をしていましたが、IntelliJを使えばリファクタリングができるので、こっちに乗り換えました。とても便利です。

参考

Haskellで、リファクタリングする方法
stack
IntelliJ-Haskell
IntelliJでHaskellを実行する(haskell stackプロジェクト)