【发布时间】:2021-03-01 00:38:50
【问题描述】:
let generateNextAssignList (assignList : (string * bool) list) : (string * bool) list * bool =
let carry = ref true in
let flag = ref true in
let inc_bools head =
let (var, boolean) = head in
if (boolean = false && !flag = true) then
(flag := false; carry := false; (var, Bool.not boolean))
else if (boolean = true && !flag = true) then
(var, Bool.not boolean)
else
(var, boolean) in
(List.rev (List.map inc_bools (List.rev assignList)), !carry);;
generateNextAssignList [("a", true); ("a", true); ("a", false)];;
我希望在所有情况下都将!carry 设为false,除非传递给函数的列表是[],或者列表中每个元组中的布尔值都是true。到目前为止,当我使用该功能时,它工作正常,但!carry 始终是true,但在函数内部正确更新。有没有办法把它变成一个全局变量来解决这个问题?
【问题讨论】:
标签: tuples global-variables ocaml ref