Haskell版ハイパー演算子
なんとなく、カリー化と演算子化に対応した言語で書きたくなったので。
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) inc = hyper 0 add = hyper 1 mul = hyper 2 pow = hyper 3 tet = hyper 4
実行結果
Prelude> 2 `inc` 3 4 Prelude> 2 `add` 3 5 Prelude> 2 `mul` 3 6 Prelude> 2 `pow` 3 8 Prelude> 2 `tet` 3 16 Prelude> 2 `hyper 1` 3 <interactive>:1:9: parse error on input `1' Preluce> 2 `(hyper 1)` 3 <interactive>:1:3: parse error on input `('
関数の部分適用式を直接バッククォートの中に書くことは出来ないのか。