VSCodeのcode-runnerでHaskellプロジェクトを実行するときの設定メモ

前回の記事でWin11のWSL経由で、VSCodeからUbuntu上のファイルを編集や実行することができました。

Ubuntu環境でのHaskellであれば、IHaskellを使ってJupyter labで動かす手もありますが、そもそも設定が煩雑であったり、突然カーネルが逝ってしまったりすることもあります。
VSCodeのcode-runnerを使えるのであれば、そちらを利用した方が楽だという場合も多いでしょう。

以下の話は、stackからGHC環境をセットアップした後の話です。そこまでの手順がわからないという方は、haskellstack.orgのインストール方法を見ましょう。Ubuntuのコマンドラインに

curl -sSL https://get.haskellstack.org/ | sh

と入れて実行すればstackがインストールされます。エラーが出る場合は、sudoで実行しましょう。続いて、stack setupコマンドをコマンドラインで実行すればHaskellのコンパイラである、GHCがインストールされます。以上でひとまずHaskellファイルが実行できるようになりました。

https://docs.haskellstack.org/en/stable/install_and_upgrade/

次にVSCodeで.hsファイルを書いて、それをVSCodeの拡張機能である、code-runnerから実行できるようにします。一見ただcode-runnerをインストールすれば実行できそうな気がしますが、code-runnerのデフォルトの設定では、.hsファイルを実行する際に、runhaskellが見つかりませんなどとエラーが出ることがあります。

これの原因は、.hsファイルの実行がstackに依存していることにあります。解決するためには、まず"Ctrl+,”を押して、code-runnerを検索し、その中から"executerMapByFileExtension"を選択して編集画面を開きます。
すると、code-runnerで実行可能なプログラミング言語の拡張子がずらりと表示されるので、その中からHaskellに対応している、".hs"の行を探し出し、"runhaskell"と書かれている部分を、"stack runghc $fullFileName"に変更して"Ctrl+s"で保存します。同様に、検索画面からexecuterMapの項も探し出して、runhaskellと書かれている部分を、やはり"stack runghc $fullFileName"と書き換えて保存します。

これで何を行ったかというと、任意のHaskellファイルを実行するときには、stackの実行コマンドである、runghcを使いますよと宣言したわけですね。今回の例のように、stackから環境を構築した場合には、stackコマンドを使うことを明示的にしないとエラーが出る場合があるわけです。

この記事が気に入ったらサポートをしてみませんか?