2

コメンテーターは最近次のように述べました

無料のモナドは教会の数字です -- 関数の代わりに (endo-) ファンクタを使っているだけです!

彼は続けてこのことわざを次のように説明しています。

それらは両方とも 0 - n 回構成された endfunction(ion|or) です

Church Numerals は、数値ごとに 1 つの構成を持つ無名関数構成のセットであることがわかります。それがFree Monadsにどのように適用されるのかわかりません。

私の質問は: Free モナドは教会の数字ですか?

4

1 に答える 1

3

並べ替え。

チャーチ数の一般化は、数nがどこにあるのかということであり、f^nどこにあるのかは、あるカテゴリーfの準同型 (ドメインとコドメインが同じオブジェクトである矢印) であり、 「時間自体で構成する」ことを意味します。通常の教会数字は、矢印が関数であるセットのカテゴリに属します。たとえば、とに適用される数字はです。たとえば、の場合は です。f^nfn3fxf(f(f(x)))f(x) = x + 103 f 030

カテゴリーのカテゴリーでは、矢印はファンクターです。3そこでは、いくつかのファンクタfとオブジェクトx(たとえば、型) に適用される数字は、再びf(f(f(x)))です。fがたとえば型コンストラクタf x = Int => xである場合、 3 f Stringis はInt => Int => Int => String、3 つの引数を取りInt、 a を返す関数の型ですString

ここで、ファンクターのf場合、Free fはによって生成されるフリー モナドfであり、型のインスタンスはFree f x単に かxのいずれかf (Free f x)です。そのため、に適用されるf(f(f(...(x)))0 個以上の s の構成であるフォームの型を持ちます。fx

したがって、「自由モナドは教会数字である」ということではありませんが、自由モナドは何らかのファンクターの型構築であり、そのファンクターの教会数字はその型に埋め込まれています。

于 2015-12-30T02:34:44.417 に答える