Haskellの環境を整える2

これは昨日の続きですが、windows10上でエディタatomで作るHaskell環境の記事です。

Windows固有の問題が少しあるようなので、この記事はWindowsユーザーがHaskellの開発環境をatomで作るということを想定しています。また、記事の製作時期は2017年3月末になります。経験上オープンソースなものの利用は微妙に仕様が変わったり表示が変更されたりということが置きますので、この記事を読まれたときの最新環境でうまくいかない可能性はあることはご承知ください。もし動かなくて、解決方法を見つけたときはお手数をおかけいたしますが、コメント欄に書いていただければ幸いです。

昨日のものは次のところにあります。

Haskellの環境を整える

今日は、より具体的なところになりますね。

足取り

  1. stackのインストール
  2. atomのインストール
  3. stackやatomに必要なプラグインや各種実行ファイルをインストール
  4. atomでHaskell IDEを体験
  5. Learn You a Haskell for Great Good! を取り組む

と言った流れのあとの話です。1,2は公式ページからアーカイブを取ってきて、クリック一つでインストール可能なので、ハマるところや迷うところはありません。3については、前回の私の記事と他の方のインストールログを参考にしています。(前回の記事はもう一度書き直すかもしれません。)今回は4になります。

プロジェクトを作る

最初にプロジェクトlearningを作ってみます。
このようにすると、learningディレクトリが出来ます。その中の構成は次のようになってます。

というふうになります。command.exeを使ってますので、中身は dir /wで示した通りですが、構成に関しては後述(画像)します。念のためにstack replとしてインタープリターが起動することを確認しましょう。

atomでファイルを開ける

atomではディレクトリでも開けられますので

とすると、atom windowが開きます。ちょっと重い目なのですぐに開きません。この開き方をすると、左側にディレクトリのツリー構造が表示されるので、そこからapp\Main.hsを開ければいいです。

この画像はREPLも開けてるのですが、とりあえず左側だけ注目してみてください。

クリックすれば1680×1080のスクリーンショットが見られます。

この画像を説明すると、haskellに関連した各種プラグイン(language-haskell, haskell-ghc-mod, ide-haskell, autocomplete-haskell,ide-haskell-cabal,ide-haskell-repl,hlint)が導入されていて、これらのプラグインに必要なhaskellツール(ghc-mod, hlint)はstackを使ってインストールしています。REPLにおけるwindows固有の問題を解決するためのラッパーghci-wrapper.exeをwindowsの方の実行パスの中に含めてます。(すでにパスが通ってるstackで出来たバイナリがあるディレクトリに入れた。) ghci-wrapper.exeのパスはide-haskell-replの環境設定のところに記述窓があるのでそちらに書いておくことが必要です。

ただ、lint(文法チェック)がファイルを開けた時にlintのチェックが有るのですが、windowsでのバグによるエラー表示が出てくることがあります。(haskell-ghc-modに関するghc-modiクラッシュに関するもの)そのエラー表示についてはすでにフィードバック済みと書かれているのでプラグイン製作者が問題解決方法を探ってるところだと思われます。

REPLの開け方

atomメニューの右端にHaskell IDEと表示があるので、その表示をマウスでクリックするとプルダウンメニューが表示されます。そのプルダウンメニューの一番下にOpen REPLとあり、これを選ぶと画面が2つに分割されて片方にREPLが表示されます。それが上の画像のようになった状態です。

画像の *Main> と書かれてる部分の下のやや暗いところが入力ウインドウになっています。ここに、succ 10といれば、11と帰ってきます。succと入れる時に途中オートコンプリートの動作がしてることも確認できます。

それで左側の上の方の表示はhistory表示ですね。REPLで利用した命令とその結果が書かれていきます。

この入力ウインドウの右側には3種類のアイコンもあります。左側から

  1. ファイルのリロードと最後の命令を再実行
  2. ファイルセーブ時のリロードを繰り返すトグルスイッチ(これはファイル更新後のリロードで動作が遅くなることはありますが、安全にプログラミングする場合はトグルはオンにしておくほうが望ましいものです。)
  3. 実行中の割り込みスイッチ

となってます。

今日はここまでです。

余談ですが、atomのテーマはUI/Sytaxテーマ共にAtom Materialと言うものを利用してます。あとはnord Atomというテーマと2つ迷いました。もう1つはSeti(Orange)も候補でした。nord material共に甲乙付け難いですがMaterial有線です。Setiはフル画面でatomを使うときは良いのですが、半分をブラウザで利用する時に真っ白の画面とsetiの真っ黒な画面が分割して表示されるとコントラストが強すぎて目に厳しいと判断したからですね。だから背景真っ黒は諦めたのです。フルサイズで使う場合はSeti(Orange)が一番好みなのです。

これまでatomでhaskellの開発環境を整えてみましたが、emacsでslimeをつかったcommon lispの環境を作ったときと隔世の感がありますね。新規参入の壁の高さが低くなってますね。いいことです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です