計算アプリケーションを作る(概要)
January 25, 2026 · View on GitHub
ここから先は、次のような仕様のコマンドラインアプリケーションを作ることをゴールとします。
- 以下のような内容の、1行ごとにタブ区切りで「分類(タブ文字や改行を含まない文字列)」と「金額(0以上の整数)」が書かれたファイルの名前を(0個以上)引数として受け取る(
<tab>はタブ文字、<newline>は改行文字を表す)。分類<tab>1234<newline> ほかの分類<tab>9876<newline> さらにほかの分類<tab>3141592<newline> - ファイルを読み、「分類」ごとの「金額」の合計を計算し、出力する。
- 同じ「分類」の行が、受け取ったファイル群の中に複数存在していることがあるので、「分類」ごとの「金額」の合計を知りたい。
- 各行の形式が上記の形式に沿わない場合、例えば各行をタブで分割した結果のリストの要素数が2でない場合や、2つめの要素が10進数になっていない場合は、例外によって強制終了する。
そのために以下の課題を解いて、Haskellの初歩を身につけましょう。以下の課題で得た知識全てが上記のアプリケーションを作るのに必要というわけではありませんが、いずれも簡単なHaskell製プログラムを書く上で役に立つので、なるべく全て解いてみてください。
- 複数の命令を並べる - (課題3)
- 入力の取得 - (課題4など)
- 型注釈をつける・入力を数値に変換する - (課題5)
- 自分で型を定義する・文字列を結合する - (課題hoge(6?))
- 型クラスで自分が作った型を拡張する - (課題hoge(7?))
- タプルを扱う - (課題hoge(8?))
- 入力した値の内容に応じて処理を分ける
if式 - (課題hoge(5.5?))case式 - (課題hoge(9?))
- 関数を定義してリファクタリングする - (課題hoge(10?))
- 処理を繰り返し実行する (1) - 再帰関数を使う - (課題hoge(11?))
- 例外をスローする・再帰呼び出し(復習) - (課題hoge(12?))
- モジュールをimportする - (課題hoge(13?))
- 標準ではインストールされていないパッケージを利用する - (課題hoge(14?))
- 処理を繰り返し実行する (2) - 標準で使える高階関数を使う - (課題hoge(15?))
- 連想配列を扱う - (課題hoge(16?))