つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

MacにhaskellをインストールしてIntellijで使えるようにする

   

題名通り、Intellijでhaskellを書けるようにするところまで書いて行きます。

こちらを参考にさせて頂きました。

Haskell + IntelliJ IDEAでゆるくHaskell入門する手始め

結局この手順通りやれば上手く行くのですが、色々適当にやったせいでハマった部分もあるので、その辺りなどを書いて行きます。

必要な物・前提

  • Intellij IDEAインストール済み
  • homebrewインストール済み

GHCインストール

まずはIntellij抜きで普通にhaskellコードをコンパイルする部分まで持って行きます。haskell-platformというものもあるようですが、これは非推奨(廃止?)になったようです。brewで入れようとすると警告が出ました。

テスト用にhaskellコードを用意します。

以下のコマンドでビルドしてから実行

 

cabalについて色々とIntellij設定

これでIntellijに必要なghc-modが入りましたので、いよいよIntellij側に行きます。

まずはIntellij -> Preferences -> Plugins -> Browse RepositoriesでHaskellプラグインをインストールします。2つありますが、日付の新しい方を使います。もう片方はIDEA version 11あたりで止まっていますので。

Browse_Repositories

インストールしたらIntellij再起動して、新しくプロジェクトを作ります。Haskell Moduleというのが選べるのでそれで作るだけです。

この時点ではまだHaskellの設定が行われていないので、設定します。出てきたウィンドウで設定するか、Preferences -> Haskellから設定します。以下のような感じで。

Preferences

上記の手順でインストールしていれば画像の通りのパスになると思います。
※/Users/tsukabyの部分は皆さんご自身のパスに置き換えてください。

src/Main.hsファイルがあるはずなので、これに先ほどと同じように記述をします。

最後にSDK設定をします。

File -> Project Structures -> ProjectでSDKが設定できるので、ここでGHC HOMEを設定します。Newを押してGHCを選んで「/usr/local/Cellar/ghc/7.8.3」あたりを選択します。バージョン部分は人によって違うかもしれません。

Project_Structure

これでOKです。

後は右クリック -> Runとかで動きます。

Main_hs_-__haskell-sample__-_haskell-sample_-____IdeaProjects_haskell-sample_

以上です。

トラブルシューティング1 ghc-modが入らない

cabal install ghc-modをすると以下のようなエラーが出ます。

haskell-src-extsがインストールされない・・・。これはhappyが入っていないせいなので、happyを入れます。

はいりました!この後で再度cabal install ghc-modすれば良いかと思います。

トラブルシューティング2 ghc [file_name]のコンパイルに失敗する

ghcはファイルの拡張子で実行する内容を変えます。最近TypeScriptを書くことが多いので全く気づかず.tsのままファイルを作ってしまいました・・・。

これのせいで4時間近く失いました・・・・。.hsで作り直したら成功しました。

トラブルシューティング3 GNU GCCがいる・・・?

結構色々なサイトにMacにGHCをインストールするときはgccを入れましょうと書いてあります。Macに入っているgccは実はclangです。

と、言う訳でbrewでgcc49入れて/usr/bin/gccをmvしてgcc49で入れたバイナリにlnしたり色々した訳ですが、多分不要かもしれないです。

brewでghcをインストールすると「/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/settings」に設定ファイルができます。

これを見る限りclang使うようになってますし、LLVM用のオプションもあるので対応したのかな?という訳で何かにコケたときはgcc云々は少し違うようです。もしかしたらということもあるので、試す価値はありますが・・・!

他にもlifted-baseがなぜかインストールできなかったり色々あったのですが、brewで何度かアンインストールして初めからやり直したら奇麗に行きました。何だったんだろう・・・。

何はともあれ無事にインストールできました。

 - Haskell ,