@genbuchan 理想的ではあると思います。というか、現実にそれを求められませんか?
型の継承に「『is-a』か否か」なんて判断基準が在るのが「意味論に従って型を使用すべし」というのを物語っていると思います。
しかし、その一方で、intだfloatだstringだという「能力的な型」も普通に「意味論的な型」と混ぜて使われているというダブスタが存在する。それは「意味論的な型のみを使用する」という理想の実現が極めて難しい、或いは不可能だからという事になるのですが。
私の主張としては、「『意味論的な型を使う』のが理想的か否か」という部分よりも、
1. 「能力的な型は止めて、意味論的な型を使いましょう」という指針が在る
2. しかし、その困難さから、能力的な型の使用も許されている現実(ダブスタ)がある
3. このダブスタについての理論的なフォローは何もない
4. 結果、(クラスベース)オブジェクト指向の定義が曖昧な物になり、捉えにくくなったり、使用が困難になっているのでは?
……という所ですね。