我有一个返回 int*int 的程序
(示例用于说明目的): fun program(a,b) = (1,2)
我想做一些事情:
fun program(a,b)
if a = 0 then (1,2)
else
val x,y = program(a-1,b)
return (x-1, y)
基本上,我想操作返回的元组,然后返回它的修改。
谢谢
我有一个返回 int*int 的程序
(示例用于说明目的): fun program(a,b) = (1,2)
我想做一些事情:
fun program(a,b)
if a = 0 then (1,2)
else
val x,y = program(a-1,b)
return (x-1, y)
基本上,我想操作返回的元组,然后返回它的修改。
谢谢
这几乎完全按照您编写的方式工作,只是您的语法有点偏离:
fun program(a,b) =
if a = 0 then (1,2)
else
let val (x,y) = program(a-1,b) in
(x-1, y)
end
具体来说:
fun f args = body
- 您省略了=
.let val foo = bar in baz end
。我还想建议,虽然您需要返回一个 type 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)