type list<e>={head:e,tail:list<e>}
function append(a,b)=
if a=nil
then b
else list{head=a.head,tail=append(a.tail,b)}
function append<d>(a:list<d>,b:list<d>):list<d>=
if a=nil
then b
else list<d>{head=a.head,tail=
append<d>(a.tail,b)}
347 ページに示した関数と同一である.次のいくつかのページで,型推論
と generalization アルゴリズムを詳しく説明する.