このチャプターの目次

これは、ひとり Advent Calendar 2021 として、1日1章ずつ公開していくものです。

題材は、カーニハンのトイ・マシン・シミュレータ

https://kernighan.com/toysim.html

をHaskellで実装するというものです。同じ題材で、第一回 関数型プログラミング(仮)の会

https://opt.connpass.com/event/222709/

で「命令プログラムを関数プログラミングっぽく書く」という話をしましたが、ここでは、関数プログラミングの過程を楽しんでいただけるようにすすめます。

準備 (toy00)

プロジェクトディレクトリを作成します。ビルドツールは、stack を使うことにします。

% stack new toy

ソースコードエディタとしては、Visual Studio Code(以降 vscode と呼ぶことにします)を使います。

% code toy

Toy モジュールファイル src/Toy.hs をとりあえず作成しましょう。まずは、モジュール宣言を書いておきましょう。

src/Toy.hs
module Toy where

次に Main モジュールファイル app/Main.hs を以下のように編集します。

  • モジュール宣言
  • Toyモジュールをインポート
  • mainundefined
app/Main.hs
module Main where

import Toy

main :: IO ()
main = undefined

この段階で、プロジェクトのルートディレクトリで stack build をやっておきます。これで、toy.cabal が生成されて、Toy モジュールがエクスポーズドなモジュールとみなされるようになります。

% stack build

エラーが出ないことを確認しておきましょう。