関数型言語とOOと副作用

http://www.rubyist.net/~matz/20061007.html#p03

Haskellモナドを「副作用」と思うか、「副作用を表現する(こともできる)データ構造であって、副作用そのものではない」と思うか…というはさておき。

しつこいようだが、そもそも「オブジェクト → 状態 → 副作用」という連想がmisleadingなmythであるように思われる(駄洒落ではありません)。80〜90年代には、TAPLの32章「Purely Functional Objects」に代表されるような、λ計算におけるオブジェクトの様々な表現が提案されたし、Abadi & CardelliのA Theory of Objectsにも関数型オブジェクト計算の話題が大量にある。Javaのminimalな計算モデルであるFJですら、破壊的代入がないという意味で関数型言語になっている。要するに、OOと関数型プログラミングは別に何ら対立しない概念だろう、という話。