ハイパー演算子
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
...
以降無限に続く