【发布时间】:2017-08-17 07:57:20
【问题描述】:
我有一个返回 int*int 的程序
(示例用于说明目的): 有趣的程序(a,b) = (1,2)
我想做一些事情:
有趣的节目(a,b)
如果 a = 0 则 (1,2)
其他
val x,y = 程序(a-1,b)
返回 (x-1, y)
基本上,我想操作返回的元组,然后返回对它的修改。
谢谢
【问题讨论】:
标签: functional-programming sml smlnj
我有一个返回 int*int 的程序
(示例用于说明目的): 有趣的程序(a,b) = (1,2)
我想做一些事情:
有趣的节目(a,b)
如果 a = 0 则 (1,2)
其他
val x,y = 程序(a-1,b)
返回 (x-1, y)
基本上,我想操作返回的元组,然后返回对它的修改。
谢谢
【问题讨论】:
标签: functional-programming sml smlnj
这几乎和你写的完全一样,只是你的语法有点不对:
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绑定。【讨论】:
我还想建议,虽然您需要返回一个类型 t : int * int,但您可以至少curry输入到您的功能来自: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)
【讨论】: