OCaml の Y コンビネータを理解しようとしています。hereからいくつかのコードを取得し、それを使用して Ackermann 関数を記述しようとしています。リンクの例では、関数に必要な引数は 1 つだけです。アッカーマン関数には 2 つの引数が必要なため、構文エラーが発生し続けます。私がこれまでに持っているコードは
type 'a mu = Roll of ('a mu -> 'a);;
let unroll (Roll x) = x;;
let fix f = (fun x a -> f (unroll x x) a) (Roll (fun x a -> f (unroll x x) a));;
let acker f = function
0, n -> n + 1
| m, 0 -> f (m-1) 1
| m, n -> f (m-1) (f m (n-1))
;;
print_int (fix (acker 2 2));;
機能させるにはどうすればよいですか?ありがとう。