Int}全体では、以下のようにファイルを配置する。モジュール名で修飾しなくてはならない。そのためには、「型クラス」を使い、関数のオーバーロードを行う必要がある。型の意味その前に、「型」について整理しておく。基本的には、値の名前付き有限集合である。values.つまり、「型」とは値の集合と、その値に対する、操作が定義されたもの。上記より、オブジェクト指向における「クラス」を連想した。「操作」に相当するメソッドを持つため。呼ばれるものには、いくつか種類があることが示されている。ような代数的データ型では、値の集合を定義するのみで、操作を定義する場合、別に関数定義する。多相性には、パラメータ多相と、アドホック多相があり、後者はオーバーロードと呼ばれる。宣言の関係」で使い方を確認した。そのとき、代数的データ型と、型クラスの関係が理解しにくく、知識として定着しなかった。オブジェクト指向におけるオーバーロード、オーバーライドには馴染みがある。パラメータ多相、アドホック多相、それに加えて、型クラスがどう絡んでいるのかイメージがしずらい。(+_+)「アドホック多相は、関数を適用する対象を制約するための手段。それを型クラスによって実現している。」と頭に叩き込もうとした。直観的に理解できず、しっくり来なかった。(@_@;)しかし、次のように考えたら、スッキリした。型は値をグループ化する。型クラスは、型をグループ化する。その結果、型クラスの制約が付いた関数は、その型クラスのグループに属していない型には適用できない。インスタンス化とは当該の型クラスに所属する宣言。二つの異なる多相について述べていたとのこと。...つまり、アドホック多相は、関数を適用する型を制限するのに対して、パラメータ多相は、具体的な型について言及しないことにより、新しい型に対応できるようにするということ。casting.オブジェクト指向においては、サブタイプ多相と呼ばれる。オブジェクトが、共通のインターフェイスを実装している場合、他のオブジェクトに置き換えることができるというもの。arguments.演算子オーバーロードは、アドホック多相に相当するとのこと。オーバーロードと言えば、以下のようにいくつか種類がある。知らなかったとき、メソッドとの違いを明確にイメージしていた。ように、「メソッド名にできない記号が演算子」と言う意識。仕様は、以下で述べられている。