見出し画像

MacBook M1 で Haskell を学ぶ環境を構築する

無限パスタを無限に作っているションローです。バターの消費がやばい・・

めちゃくちゃ今更ですが、 人々がモナドについて話している時に知ったかぶりをしなくてすむようちゃんと勉強しようと思い、Haskellの勉強をはじめました。
Haskell入門書として評判の良いすごいH本を買ったのですが、環境構築に若干迷いました。

この記事ではどのように環境構築をしたか、その過程を書いていこうかと思います。

開発環境

画像1

MacOS BigSur, MacBook Air (M1, 2020)🍏です。

すごいH本では Haskell Platform をいい感じにダウンロードしろと書いてあったのですが、公式を見た感じStackを使うのが推奨っぽかったのでそちらを利用していきます。

Stackの詳細についてはこちらの記事で学ばせていただきました。🙏

Stackのインストール

StackはまだApple Silicon向けのネイティブ対応が終わってないようです。

ということで今回は Homebrew 経由でインストールすることにしました。

自分の現環境だと Homebrew をそもそもRosetta経由で利用しているので、StackもRosetta経由、つまりx86_64環境で動作させることになります。

Apple Sillicon端末でのHomebrewのインストール方法は記事が色々存在するので割愛しますが、自分はターミナル自体をRosettaで開くようにしてしまっています(負けた気分)

Homebrew経由でのインストールは公式のガイドを参照して下さい。

セットアップ

Stackのインストール完了後、GHC(Haskell Glasgow Compiler)をインストールする必要があります。

$ stack setup
Preparing to install GHC to an isolated location.
This will not interfere with any system-level installation.
Downloaded ghc-8.8.4.
ld: unknown option: --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Pla
tforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1

...(中略)...

Installed GHC.
stack will use a sandboxed GHC it installed
For more information on paths, see 'stack path' and 'stack exec env'
To use this GHC and packages outside of a project, consider using:
stack ghc, stack ghci, stack runghc, or stack exec

ここまで行けば完了です。

Hello worldする

画像2

まずはHello worldしてみます。

Stackから利用できるHaskell用のインタプリタとして GHCi が存在するので、そいつを使用。

$ stack exec ghci
GHCi, version 8.8.4: https://www.haskell.org/ghc/  :? for help
Prelude> "Hello world"
"Hello world"

評価された文字列が出力される様子。「”」は文字列のリテラルで、Prelude> はデフォルトのプロンプトです。

stack ghci だけでも GHCi を起動ができるものの、ローカルプロジェクトの影響を受けるため、プレーンな状態で起動するには stack exec ghci を使うのが良さそうです。

まとめ

M1のMacでHaskellの開発環境を構築する方法を書きました。
RosettaのおかげでHaskellの開発環境構築も特に難なく構築できるようです。
Rosetta最高!