ブロック:高階関数 ≒ オブジェクト:モジュール?
ブロックまわりの構文解析をいじるためにRubyをちょっとだけ勉強したのだが(普通と順番が反対かも)、
- 「高階関数がとる関数引数は高々一個」
と同じように、もし
- 「一個のモジュールが定義する抽象データ型は高々一個」
- 「その抽象データ型tを実装する関数は、t型の引数を高々一個しかとらない(バイナリメソッドはない)」
としたら、モジュールシステムよりオブジェクト指向のほうが簡潔、という議論も可能かと思った。後者2つの仮定は最初の仮定ほど頻繁に成立しないかもしれないが、少なくとも成立する場合には当てはまる?(モジュールとオブジェクトの比較についてはhttp://d.hatena.ne.jp/sumii/20070104/p1も参照)