Haskell
IntelliJ
stack

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

More than 1 year has passed since last update.

やりたいこと

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

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

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

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

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

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

Import Projectを押す
Screen Shot 2017-08-24 at 2.25.35 pm.png

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

Screen Shot 2017-08-24 at 2.27.57 pm.png

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

Screen Shot 2017-08-24 at 2.28.59 pm.png

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

Screen Shot 2017-08-24 at 2.36.03 pm.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

以下の[+]を押して、

Screen Shot 2017-08-24 at 1.21.00 pm.png

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

Screen Shot 2017-08-24 at 1.20.52 pm.png

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

Screen Shot 2017-08-24 at 1.21.14 pm.png

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

Screen Shot 2017-08-24 at 1.26.37 pm.png

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

Main.hs
module Main where


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

[Run]のボタンを押せば、実行できます。
Screen Shot 2017-08-24 at 1.27.44 pm.png

以下のようにIntelliJでhello, worldが実行できました。
Screen Shot 2017-08-24 at 1.30.33 pm.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

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

GitHub: rikvdkleij/intellij-haskell: IntelliJ plugin for Haskell