2010-09-17 31 views
2

我有一個程序,均返回int * INT新建ML:如何存儲類型的返回值* A * A *

(舉例說明目的): 樂趣程序(A,B)=( 1,2)

我想要做的事沿着線:

樂趣計劃(A,b)
如果A = 0,則(1,2)
其他
VAL X, y =程序(a-1,b)
返回(X-1,Y)

基本上,我想操縱返回的元組,然後返回它的一個變形例。

感謝

回答

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中沒有返回關鍵字。
0

我也想建議,當你需要返回一個類型t : int * int,你可以ATLEAST咖喱輸入從您的功能: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)

相關問題