如何在CPN ML的if语句中编写多个语句?

时间:2013-08-05 09:52:52

标签: ml

我想更新 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 个答案:

答案 0 :(得分:2)

纯函数式编程中的变量实际上不是变量。也就是说,一旦为变量赋值,就无法更改它(只能通过具有相同名称的新变量来遮蔽变量)。如果您确实需要/想要可变性,可以使用ref类型(对于可变引用,其作业为:=,而不是=,并且通过前缀!取消引用

对于 ML 中的块结构,只需使用括号(),并用分号;分隔语句。

您可以使用以下代码:

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替换了continue(在您的帖子中未定义)。我只是说上面的代码编译,但并不是很有意义。