しょうがないな、おまいらよ。
俺が新文法を提示してやるよ。

・再帰用デフォルト引数
再帰関数でしか使えないデフォルト引数で、
外からはそのデフォルト引数しか使えず、
再帰呼び出しの時のみそれ以外の引数を指定できる。

例)
let pow x n (res := 1) =
 if n = 0 then
  res
 else
  pow x (n - 1) (res * x);; (* OK *)
pow 4 2;; (* OK *)
pow 4 2 5;; (* Irregal! *)

どうよ?