このブログ記事では、筆者がどのようにしてVSCodeでHaskellのコードを実行するための環境を設定したかを説明します。

コードを書き始める前に、まず環境を設定する必要があります。環境を設定する方法は複数ありますが、 ここでは私が使っているデバイス(M2 MacBook)での設定方法を紹介します。
GHCupのインストール
GHCupは、GHC、GHCi、Cabal、その他Haskellに関する便利な依存関係を簡単にインストールできる主要なインストーラーです。
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
上記のスクリプトをターミナルに入力して、GHCupをインストールできます。これを実行すると、 インストール前に3つの質問がされます。以下は私の回答です:
Do you want ghcup to automatically add the required PATH variable to "User/YOUR_USERNAME/.bashrc"? => A (Yes, append)
Do you want to install haskell-language-server (HLS)? => Y (Yes)
Do you want to install stack? => N (No)
上記の質問にすべて回答し、GHCupのインストールが完了したら、ターミナルを再起動するか、
. /USERS/YOUR_USERNAME/.ghcup/env
を実行してコマンドを使用できるようにします。
次のステップに進む前に、ghcup tuiを使用してインストールが成功したか確認してください。
(GHCupを終了するには、qを入力します。)
VSCodeのセットアップ
まだVSCodeをインストールしていない場合は、 こちらのリンクにアクセスしてセットアップしてください。 これは、多くの開発者が愛用しているIDEで、数多くの便利な機能や拡張機能があります。 (目のためにダークモードを使用しましょう。)VSCodeで拡張機能ページを開き、検索ボックスに「Haskell」と入力します。 一番上に公式の「Haskell」という名前の拡張機能が表示されるので、それをインストールして有効にします。 インストール時に設定に関するいくつかの質問があるかもしれませんが、デフォルトの回答を選択すれば問題ありません。 (VSCodeにアイコンテーマをインストールしている場合、Haskell用のワークスペースではそれを無効にすることをお勧めします。 なぜなら筆者は.hsファイルのデフォルトアイコンが個人的に大好きだからです。)
また、再度拡張機能のページを開いて、検索ボックスに「code runner」と入力します。「Code Runner」(作者: Jun Han) という拡張機能が表示されるので、 それもインストールして有効にしてください。これにより、コードの実行やデバッグが便利になります。
初めてのHaskellコードを書こう
環境が正しく設定されているかテストするために、簡単なコードを書いてGHCiで実行してみましょう。VSCodeでdemo.hsというファイルを作成し、以下のコードを入力します。
main = putStrLn "Hello World!"
上記のコードを入力すると、コードのすぐ上にmain :: IO ()と表示されるはずです。これは関数の推論された型です。それをクリックするか、main :: IO ()と入力して、ファイルに以下のコードを追加します。
main :: IO ()
main = putStrLn "Hello World!"
上記のコードは、ターミナルに「Hello, World!」と表示するだけのものです。(今は文法や詳細については気にしないでください。)次に、VSCodeでターミナルを開き(ターミナル -> 新しいターミナル)、以下のコマンドを入力します。
ghci demo.hs
ターミナルに以下のような表示がされるはずです:
GHCi, version #.#.#: https://www.haskell.org/ghc/ :? for help
[1 of 2] Compiling Main ( demo.hs, interpreted )
Ok, one module loaded.
ghci>
ここで、mainと入力します。すると...
ghci> main
Hello World!
おめでとうございます!環境を正常に設定し、初めてのHaskellプログラムを実行できました!
GHCiを使う代わりに、右上にあるプレイボタンをクリックすることで、main
関数を実行できます。
(ただし、main
関数以外ではできないので注意が必要)
コードの変更
コードを変更したい場合、例えば「World」の代わりに自分の名前を追加する場合は、まずdemo.hsを以下のように書き換えます。
main :: IO ()
main = putStrLn "Hello TK!" -- "World" を "TK" に変更
変更をファイルに保存するには、Command+Sを押します。(筆者はこれをよく忘れます。) では、GHCiで再度mainを実行してみてください。どうなりましたか? まだ「Hello, YOUR_NAME!」ではなく「Hello, World!」と表示されるはずです。 これは、GHCiがファイルをリロードする必要があるためです。 ファイルをリロードするには、以下のようにします:
ghci> :l demo.hs
ghci> main
Hello TK!
これで、名前が正しく表示されるはずです。GHCiを終了したい場合は、Control+Dを押します。 おめでとうございます!これでHaskellerになる旅の準備が整いました!