はじめに
Mac で stack を用いて Haskell の hello world をする方法を記載します。
環境
- Mac
- brew
- tree
Haskell とは
Haskell (ハスケル) とは、純粋関数型プログラミング言語です。
高階関数や静的多相型付け、定義可能な演算子、例外処理といった多くの言語で採用されている現代的な機能に加え、パターンマッチングやカリー化、リスト内包表記、ガードといった多くの特徴的な機能を持っています。
参考: wikipedia
Stack とは
Stack は、Haskellプロジェクトを開発するためのクロスプラットフォームプログラムです。
以下の機能があります。
- 隔離された場所にGHCを自動的にインストール
- プロジェクトに必要なパッケージをインストール
- プロジェクトを構築
- プロジェクトをテスト
- プロジェクトをベンチマーク
環境構築
brew
を使って、 stack
をインストールしましょう。
$ brew install stack
$ stack setup # コンパイラや基本パッケージをインストール
プロジェクトの作成
stack new
でプロジェクトを作成できます。
$ cd /path/to/your/workspace
$ stack new helloworld # helloworld プロジェクトの作成
$ cd helloworld
プロジェクトファイルの確認
tree
コマンドで、ディレクトリ構成を見てみましょう。
細かい説明は、割愛します。
$ tree
.
├── ChangeLog.md
├── LICENSE
├── README.md
├── Setup.hs
├── app
│ └── Main.hs
├── hello.cabal
├── package.yaml
├── src
│ └── Lib.hs
├── stack.yaml
├── stack.yaml.lock
└── test
└── Spec.hs
3 directories, 11 files
プロジェクトの編集
それでは、プロジェクトを編集していきましょう。
主要なファイルは、 app/Main.hs
と src/Lib.hs
です。
app/Main.hs
app/Main.hs を見ると、Lib が import されており、 main で someFunc が呼び出されています。
module Main where
import Lib
main :: IO ()
main = someFunc
この someFunc は src/Lib.hs に定義されているので、そっちをみてみましょう。
src/Lib.hs の確認
src/Lib.hs をみると、デフォルトではこのようになっているはずです。
-- src/Lib.hs
module Lib
( someFunc
) where
someFunc :: IO ()
someFunc = putStrLn "someFunc"
src/Lib.hs の編集
src/Lib.hs を以下のように編集してみましょう!
-- src/Lib.hs
module Lib
( someFunc
) where
someFunc :: IO ()
someFunc = putStrLn "Hello, world!" -- 編集
プロジェクトの実行
それではお待ちかね、プロジェクトを実行しましょう。
$ stack build
$ stack exec helloworld-exe # stack exec [プロジェクト名]-exe
Hello, World!
無事、「Hello, World!」 が表示されましたね!
終わりに
いかがだったでしょうか?
おそらくこれが、 Haskell と Stack を用いた最速の Hello, World かと思われます。
これで、皆さんも良い Haskell ライフを!