Это зависит от того, какую реализацию вы используете, но обычно вам нужно конвертировать ваши Int в типы LageInt / InfInf с Int.toLarge
:
(* will be types as an IntInf *)
val aa = 10983298432984329843298432984329843298432987987987432987987987432987
val a = IntInf.pow(aa,10);
(* explicit type as if some other constraint had enforced this*)
val b = 10 : int
val c = Int.toLarge b;
val d = IntInf.pow(c, b);
Переменная aa
может не анализироваться впереводчик.Это зависит от того, что вы используете.Я проверил это в poly и mlton.
, где вышеприведенное получает типы (заданные mlton с флагом -show-based):
val a: intInf
val aa: intInf
val b: int32
val c: intInf
val d: intInf