this questionとthis blog postを読むと、タイプ代数とそれを乱用する方法についての詳細がわかりました。タイプ代数とクヌスの上向き矢印の表記
基本的には、
1)私たちは、さらにとしてEither A B
タイプと考えることができます:A+B
2)当社は、乗算として順序対(A,B)
と考えることができます:A*B
3)私たちが考えることができます関数のA -> B
累乗として:B^A
ここには明らかなパターンがあります:Multiplicatイオンは繰り返し加算され、べき乗は繰り返し乗算される。これにより、指数としてKnuth to define the up arrow↑、繰返し累乗として↑↑、繰り返し↑↑で↑↑↑などとなりました。したがって、10↑↑↑↑10は巨大な数値です。
私の質問は次のとおりです。↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑代数データで表すことができる方法 タイプ? ↑は無限の数の引数を持つ関数でなければならないようですが、あまり意味がありません。 A↑B
は、単に[A] -> B
となるため、A↑↑↑↑B
は[[[[A]]]]->B
ですか?
あなたがAckerman functionのようになるか、またはhypergrowth functionsのいずれかを説明できる場合、ボーナスポイント。
私はこれを行うことができるとは思いません本当に正式な方法で。 'x-> a 'で'aˣ'を特定することは、すでに少しだけアドホックであり、 'aˣ+'と 'aˣ+aʸ'と'aˣʸ'と '(aˣ)ʸ'の間の同形。しかし、これらの同形は正確に標準的ではありません。 – leftaroundabout