ML新手:如何存储类型a * a * a *的返回值

时间:2010-09-17 04:16:08

标签: functional-programming sml smlnj

我有一个返回int * int

的程序

(示例用于说明): 有趣的程序(a,b)=(1,2)

我想做一些事情:

  有趣的节目(a,b)
     如果a = 0则为(1,2)
     否则
     val x,y =程序(a-1,b)
     return(x-1,y)

基本上,我想操纵返回的元组,然后返回它的修改。

由于

2 个答案:

答案 0 :(得分:1)

这几乎与您编写的一样,除了您的语法有点偏离:

fun program(a,b) =
  if a = 0 then (1,2)
  else
    let val (x,y) = program(a-1,b) in
      (x-1, y)
    end

具体做法是:

  1. 功能由fun f args = body定义 - 您遗漏了=
  2. 变量与let val foo = bar in baz end绑定。
  3. sml中没有返回关键字。

答案 1 :(得分:0)

我还建议,当您需要返回类型t : int * int时,您可以至少 咖喱来自int * int = int -> int的函数输入。如果您需要将其重新打开,则可以始终取消发送。我建议将函数编写为:

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)