intellij-haskellというプラグインを使って、効率よく開発ができるようになりました!!
環境
Ubuntu 16.04LTS
mac OS Sierra
手順
- stackをインストール
- IntelliJをダウンロード
- プラグイン「IntelliJ-Haskell」をインストール
- 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」をインストール
- File -> Project を選択
- Pluginを選択し、Brows repositories... を選択
- 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プロジェクト)