2016-03-20 3 views

答えて

5

idfoldMap引数として取るときに、amと同じタイプであるように制約となることを意味するタイプx -> xです。この新しいタイプはnと呼んでください。 aはフリータイプの変数なので、nにある唯一の制約はmです。つまり、nはモノイドです。

この結果、idのアプリケーションのために、n -> nの初期値を削除した後に、タイプシグニチャ(Foldable t, Monoid n) => t n -> nが生成されます。これは、タイプ変数の名前が任意であるため、nのラベルを再度mに再ラベルした後に、あなたが観察するタイプシグネチャです。

4

aには制限がありませんが、mはモノイドでなければなりません。 idはモノイドを返さなければならないので、モノオイドも引数として取る必要があります。つまり、Foldableはモノイドをラップする必要があります。

つまり、foldMapidは、Foldable以上の単調な値で構成されています。

関連する問題