ハイパー演算子
hyper operator
加算、乗算、冪乗を一般化した演算のための演算子
クヌースの矢印表記を使って表記されることが多い
定義
code:hs
hyper 0 a b = succ b
hyper 1 a 0 = a
hyper 2 a 0 = 0
hyper n a 0 = 1
hyper n a b = hyper (n-1) a $ hyper n a (b-1)
使い方
code:hs
inc = hyper 0 -- inc _ 1 == 2
add = hyper 1 -- add 1 2 == 1+2
mul = hyper 2 -- mul 1 2 == 1*2
pow = hyper 3 -- pow 1 2 == 1^2
tet = hyper 4 --
pen = hyper 5 --
元となる考え
複数回の加算→乗算
ex. 3回、2を足す → 2+2+2 → 2*3 → 6
複数回の乗算→冪算
ex. 3回、2をかける → 2*2*2 → $ 2^3 → 8
複数回の冪乗→テトレーション
ex. 3回、2の冪乗をする → $ 2^{2^{2}} → → 16
複数回のテトレーション→ペンテーション
複数回のペンテーション→ヘキセーション
https://googology.wikia.org/ja/wiki/ヘキセーション
複数回のヘキセーション→ヘプテーション
https://googology.wikia.org/wiki/Heptation
...
以降無限に続く
https://ja.wikipedia.org/wiki/ハイパー演算子
https://googology.wikia.org/ja/wiki/ハイパー演算子
https://kgtkr.net/blog/2019/04/12/typescript-type-level-hyper-operation