C言語の課題あと一息

現在のコード行数

$ wc -l exp-tree.c exp-tree.h formula.c formula.h main.c main.h rational.c rational.h mylib.h 
  267 exp-tree.c
   47 exp-tree.h
  160 formula.c
   77 formula.h
  123 main.c
    6 main.h
   98 rational.c
   20 rational.h
   31 mylib.h
  829 合計

この中で、formula.c formula.h を除いた592行分は Scheme でプロトタイプを作ったわけだが、そっちは僅か77行。Schemeにあらかじめ存在するもののサブセットを、ひとつひとつC言語で書くものすごくボトムアップなプログラミングをした。C言語なのにどこかScheme(Lisp)の香りがするコードに仕上がっております。

しかし、C言語で配列なり線形リストをがしがし複製して使うときは、かなり慎重にやってあげないと予期せぬ計算結果になってしまうのが面倒だ。Schemeならほっとけばコピーされるのに。一箇所複製ではなくポインタの代入になっていたせいで、出力される解のいくつかだけがぶっ壊れるというなんとも対処しにくいバグが発生して大変だった。