我不确定如何做到这一点但是假设你有一个if和else语句,而在else子句中我想执行一个语句,然后是另一个单独的语句。
例如:
let rec uniq_aux old_l new_l = match old_l with
[] -> []
| (h::t) ->
if (contain h new_l) then
uniq_aux t new_l
else
h::new_l ; (uniq_aux t new_l)
;;
在代码的最后一行我想将h添加到新列表(new_l)并继续通过旧列表进行处理以处理更多信息。
但是我在该行和我所在的行上收到错误:包含h new_l然后
答案 0 :(得分:1)
您似乎希望表达式h :: new_l
修改new_l
,因此它包含一个新元素。但是,OCaml并没有这样的工作。 OCaml变量是不可变的。 (很抱歉继续重复这个,但我希望有必要打破必要的思维习惯。)
假设我对你想要的代码做了什么,函数式编程的等价看起来大致如下:
let new_new_l = h :: new_l in
uniq_aux t new_new_l
换句话说,您可以使用所需的值定义 new 变量,并使用新变量代替旧变量。