IntelliJでHaskellを実行する（haskell stackプロジェクト）

## やりたいこと

stackで管理さているHaskellをIntelliJで開発し、実行すること

## プラグインintellij-haskellのインストール

プラグイン`intellij-haskell`のインストール方法と、新規プロジェクトの作成方法はこちらにあります
写真付きでわかりやすいです。

[HaskellをIntelliJで使えるようになりました！](http://qiita.com/v97ug/items/245faeb80abea19886e8)


## IntelliJで既存のstackプロジェクトを読み込む

ほとんど上記の記事通りなのですが、すこし注意点を書きたいと思います

Import Projectを押す
![Screen Shot 2017-08-24 at 2.25.35 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/81625ee5-5809-7e39-b509-cd907e9489ce.png)

stackプロジェクトのディレクトリを指定して[Open]（[開く]）を押す

![Screen Shot 2017-08-24 at 2.27.57 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/cdf955ee-d25f-f46f-58a5-54df0e0511bf.png)

ここでHaskell Stackを選択する
（ここが注意点です。ぼくの場合は自動的にHaskell Stackと選択されず、後々エラーが発生しました）

![Screen Shot 2017-08-24 at 2.28.59 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/f542923a-b90c-3f69-16ce-cb4101b0eb50.png)

以下の写真だと幾つかstackがありますが、初期画面だと一つもないと思います。
ターミナルで`which stack`で表示されるパスを指定すれば、
以下の写真のようにProject SDKが選択できるようになります。

![Screen Shot 2017-08-24 at 2.36.03 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/f420e563-7695-9454-f159-7fe6053a7564.png)
（Mac利用者で`stack`が隠しフォルダ内にインストールされてFinderで選択できない場合は、「Cmd+.　ピリオド」をすると隠しファイルを見えるようになります：参考：http://minto.tech/mac-kakusifile/ ）


[Finish]を押して、完了です。

このあと、「Busy with building OOO ...」とか「Registering OOO ... 」とかが割りと時間かかりますが、待てばOKです。


## 本題：IntelliJ内で実行する方法（stack exec）


まず[Run] > [Edit Configurations]をクリックします

![Screen Shot 2017-08-24 at 1.20.03 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/7e1f74f4-c414-84bd-aac6-6814ed0fe816.png)

以下の[+]を押して、

![Screen Shot 2017-08-24 at 1.21.00 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/8e5152f3-983a-73be-4424-8421604daaaa.png)

[Haskell Stack]>[Haskell Stack Runner]をクリックします
（そのままのフォーカスで「sta」ぐらいまで入力すると出てきます）

![Screen Shot 2017-08-24 at 1.20.52 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/455c1217-f8d2-cddb-9e91-073d4fd7f6fd.png)

そうすると、Unnnamedという名前で実行設定が作成されます。
Executableの欄は自動で「my-first-haskell-app」になりました。
（IntelliJのプロジェクト名が「my-first-haskell-app」です）



![Screen Shot 2017-08-24 at 1.21.14 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/0906a6f9-60a7-9303-3d3d-a214f2156ce1.png)

「Unnamed」だとわかりづらいので、「Main」に変更しました（任意）。

![Screen Shot 2017-08-24 at 1.26.37 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/aff964a6-cf9b-4bd4-fba1-7d8c568d9a8d.png)


なんとなく、Main.hsを「hello, world」に変えて、

```hs:Main.hs
module Main where


main :: IO ()
main = putStrLn "hello, world"
```


[Run]のボタンを押せば、実行できます。
![Screen Shot 2017-08-24 at 1.27.44 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/c513a7e7-13ae-71d7-f716-6d5e880ce144.png)

以下のようにIntelliJでhello, worldが実行できました。
![Screen Shot 2017-08-24 at 1.30.33 pm.png](https://qiita-image-store.s3.amazonaws.com/0/84451/508babfd-dc77-fd6b-5b15-aeebd931d99e.png)


## intellij-haskell

以前(2017/3/7)、IntelliJで実行できなかったので、https://gitter.im/intellij-haskell/Lobby で尋ねたところ、
まだ、未実装ということで、将来的には実装されそうな感じでした。

@rikvdkleijさんの返答
> @nwtgck That is not yet implemented in latest beta, probably in next beta, @zjhmale is busy with implementation

intellij-haskellを使えば、IntelliJの定義元ジャンプや、変数名のリファクタリングなどもでき、Haskellでの開発がすごくやりやすなっています。まだbeta版で開発者さんたちが活発に開発中です。
![hidea.gif](https://qiita-image-store.s3.amazonaws.com/0/84451/0365546b-d3ab-934b-e287-765bcf7da035.gif)


やっぱりHaskellをIntelliJで開発できるのは、とても魅力的ですよね。応援を込めて、皆さんのスターをお願いします！

GitHub: [rikvdkleij/intellij-haskell: IntelliJ plugin for Haskell](https://github.com/rikvdkleij/intellij-haskell)