入出力

この辺の入出力ライブラリを見ると、多態つかうと再利用性が高くていいなぁと。OCamlで似たようなことができないかなという話。要は、入出力が() -> char / char -> ()あたりの、つまり自分で作れるinterfaceで定義されていればいいですねと。Stream moduleがまさに入力に対応しているのだが、どういうわけかScanfやinput_XXXはin_channelを使っているし、Stream.tからin_channelに変換もできない。うーん。ムリなのだろうか。それっぽいものは見あたらない。
多態と高階関数の関係がおもしろい。実行時に振る舞いをかえるために多態を使うのは、高階関数も同じわけだから、実質的に同じことができるはず。高階関数っぽいことを多態でやったのが、JavaのComparatorとかに対応するわけですね。