Haskellerへの道 #0 - 環境のセットアップ

Last Edited: 6/11/2024

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

Haskell & VSCode

コードを書き始める前に、まず環境を設定する必要があります。環境を設定する方法は複数ありますが、 ここでは私が使っているデバイス(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というファイルを作成し、以下のコードを入力します。

demo.hs
main = putStrLn "Hello World!"

上記のコードを入力すると、コードのすぐ上にmain :: IO ()と表示されるはずです。これは関数の推論された型です。それをクリックするか、main :: IO ()と入力して、ファイルに以下のコードを追加します。

demo.hs
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を以下のように書き換えます。

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になる旅の準備が整いました!