OOPはよく知らないが

「実装とインターフェースは分離するべき」って言うなら、諸OOPLにあるclassキーワードによって定義できる型は全て、実装とインターフェースが同居してるから分離できていないことになるような気がする。Haskellのほうがよっぽどインタフェースと実装が分離できている気がする。