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 `('

関数の部分適用式を直接バッククォートの中に書くことは出来ないのか。