CONCURRENT CLEAN 1部3章

「リストの比較と整列」で

リストに関する==の定義について、多重定義演算子==の新しいインスタンスは以下の型で定義されるべきである。

instance == [a] == a
where
(==) infix 4 :: [a] [a] -> Bool | == a

 これは、==はリスト要素についても定義されているという前提の下で、リストについて使用できるということを表現している。従って、関数のリストは互換性がない。というのも、関数それ自体が互換的でないからである。しかし、整数のリストのリストは互換的である。というのも、整数のリストは互換的であるからである(整数が互換的なので)。

と、「インスタンス」とか「互換」とか未定義であるのにいきなり出てくる。