2013-08-05 158 views
0

我想更新ML中if語句中兩個變量的值。我用這個代碼:如何在CPN ML的if語句中編寫多個語句?

fun next (row, start) = 
    let 
    val b = 1 
    val continue = false 
    in 
    while (start <= 8) do 
    (
     if condition 
     then 
     b = start 
     continue=false 
     else 
     b = b 
    ) 
    end; 

但是這段代碼有錯誤,我不知道爲什麼。更一般地說,ML中塊的語法是什麼?

回答

1

純函數式編程中的變量其實不是變量。也就是說,一旦你給變量賦了一個值,你就不能改變它(只能用一個具有相同名字的新變量來映射變量)。如果您確實需要/想要可變性,您可以使用ref類型(對於可變引用,其賦值爲:=,而不是=,以及通過前綴!解除引用)。

至於嵌段結構中ML,只是用分號;使用括號()和獨立的語句。通過continue

fun next (row, start) = 
    let 
    val b = ref 1; 
    val continue = ref false; 
    in 
    while (!start <= 8) do (
     if !continue 
     then (
      b := !start; 
      continue := false 
     ) else (b := !b) 
    ) 
end; 

,我代替condition(這不是在您的文章中定義):

你可以使用下面的代碼。我只是說,上面的代碼編譯雖然,而不是它很有意義。

+0

非常感謝。太好了。 –