我想更新 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 中的块的语法是什么?
答案 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
(在您的帖子中未定义)。我只是说上面的代码编译,但并不是很有意义。