プログラミング方法論の課題

最終課題は自由ということで、MLでMRPを実装してみた。MRPとは資材所要量計画のことで、在庫と部品表、生産計画(受注)から手配量を計算する方法である。
まず、一番シンプルな形で計算してみる。所要量と在庫(未来の在庫である発注残を含む)のリスト構造を渡すと、手配のリストとワーニングの組を返す。基本的に一つの品目だけであればこれだけでいい。
あっけなく数行で書けてしまう。つぎに、もうすこし複雑なパターン、というふうにどんどん大きくしていく。最終的には部品表から子品目を展開し、全品目のオーダーを計算できるようになった。また、すでに発注されている手配の前倒し勧告や、在庫の余剰警告を行うことができるようになった。
コード量は数百ステップで、驚くほど少なくてすんだ。さすがに関数型プログラミングというべきか。forやwhileなどの細かい境界条件を考えなくていいので楽だ。
ただ、代入がないので、レコード型(いわゆる構造体)の一部を更新するというような処理を書くことができないので、処理ごとにレコードを作り直さなければならなかった。これは、レコードの内容が変更されるなどというときに大きなネックになるように思う。というよりも、MLにおけるレコード型の扱いが中途半端である。(授業にあったように)