過去の記事で Windows に Haskell 環境を構築したが、Mac でも環境を構築してみた際の手順をまとめてみる。
環境
- macOS Monterey 12.6.3
- Homebrew 4.2.2
インストール
brew install stack
これだけ。haskell-stack
を指定しても同じものがインストールされる*1。
brew install haskell-stack
stack コマンドのパスを確認してみると haskell-stack の名前でディレクトリが作成されていることがわかる。
% which stack /usr/local/bin/stack % ls -al /usr/local/bin/stack lrwxr-xr-x 1 gumfum admin 40 1 5 14:24 /usr/local/bin/stack -> ../Cellar/haskell-stack/2.13.1/bin/stack
stack setup
コマンドの実行が必要との情報もあったが、私が Homebrew 経由でインストールした場合には以下のようなメッセージが表示されたため、セットアップなどは必要なくそのまま使うことができそうである。
Haskell コンパイラ ghc
や、インタプリタ ghci
などを利用したい場合は、それぞれ stack
を頭につけて実行する。
% stack setup Stack will use a sandboxed GHC it installed. To use this GHC and packages outside of a project, consider using: stack ghc, stack ghci, stack runghc, or stack exec.
ghci を使う
stack ghci
で対話環境を起動できる。メッセージがいくつか出てくるが、特に設定はしなくても使用できる。
% stack ghci Note: No local targets specified, so a plain ghci will be started with no package hiding or package options. ( ... 中略 ... ) Prelude> putStrLn "Hello World!" Hello World! Prelude> sum [1..100] 5050
モジュールを import して使うこともできる。
Prelude> import Data.List Prelude Data.List> nub [1,2,3,4,5,6,1,2,3,4] [1,2,3,4,5,6]
終了する場合は :q
もしくは :quit
を実行するか、control + D
を入力する。
Prelude> :q Leaving GHCi.
サンプルプロジェクトを作る
stack new
でサンプルプロジェクトが作成できる。
% stack new haskellTestProject
ディレクトリ構造は以下のようになっており、someFunc
と表示されるだけのコードが作成される。テストコードも用意されているが中身は実装されていないようである。
% tree haskellTestProject haskellTestProject ├── CHANGELOG.md ├── LICENSE ├── README.md ├── Setup.hs ├── app │ └── Main.hs ├── haskellTestProject.cabal ├── package.yaml ├── src │ └── Lib.hs ├── stack.yaml └── test └── Spec.hs
% cat haskellTestProject/app/Main.hs module Main (main) where import Lib main :: IO () main = someFunc
% cat haskellTestProject/src/Lib.hs module Lib ( someFunc ) where someFunc :: IO () someFunc = putStrLn "someFunc"
% cat haskellTestProject/test/Spec.hs main :: IO () main = putStrLn "Test suite not yet implemented"
このままビルドおよび実行することができる。実行時には プロジェクト名-exe
を指定する*2。実行すると someFunc
と出力されることが確認できた。
% cd haskellTestProject % stack build ( ... 中略 ... ) Registering library for haskellTestProject-0.1.0.0. % stack exec haskellTestProject-exe someFunc
環境構築としては一旦ここまで。