使ってリストのマージソートを実装しました。使ってリストのマージソートを実装します。この実装は以前の章と同じアルゴリズムを用いています。長さを保持するよう関数を保証するために、実装したソート関数に型を割り当てます。この関数はソートする前のリストと同じ長さのリストを常に返します。割り当てられている型は、入力された2つのリストの長さの和と等しい長さのリストをこの関数が返すことを明確に示しています。停止する関数であることを検査していることに注意してください。入力されたリストと同じ長さのリストを返すことを示しています。相互再帰的に定義されています。それらの停止性メトリクスは自然数のペアで、整数列は標準の辞書順で比較されます。割り当てられた型は、リスト引数の長さのために整数引数が必要であることを示しています。割り当てられた型は特に有益です。この関数の引数と返値の間の関係を表わしていて、コードを理解しようとする人の助けになるでしょう。入力を逆順にした線形リストを返します。線形リストを非線形のリストに変換します。この変換では実行時のコストは発生しません。線形リストついては別の章で解説します。