>>973
>>975
Vector a を [a] に変換して使うのには(遅延評価のおかげで)定数オーダーの時間コストしかかからないけど、
オブジェクト指向で言うところの具象オブジェクトAを具象オブジェクトBに変換するのには、オブジェクトAの抱えてるデータをコピーしなければならないから、時間・空間の両面でコストがかかる。
オブジェクト指向ではインターフェイス(純粋仮想クラス)を使うことでこの問題を解決することが出来る。

できるだけ抽象に依存すべき、っていうのは正しい。
オブジェクト指向での設計は、まずインターフェイスを作ってからそれを実装する、って流れがベターだけど、
Haskellでの設計は、型クラスを最初に作るのがよい、ってわけじゃないと思う。