Я также хотел бы предложить, чтобы хотя требовалось для возврата типа t : int * int
, вы можете по крайней мере карри входные данные для вашей функции из : int * int = int -> int
. Если вам нужно повернуть это назад, вы всегда можете uncurry . Я бы предложил написать функцию как:
fun program a b =
if a = 0
then (1,2)
else
let
val (x,y) = program (a - 1) b
in
(x - 1, y)
end
Тип этой функции: int -> int -> (int * int)