如何根据Ocaml中的条件指定值?

如何根据Ocaml中的条件指定值?,ocaml,Ocaml,我想表达以下几点: if b then let value = ... in else let value = .... in let double = value * 2 但是Ocaml似乎不允许这种语法。如果我不想重复let double=value*2部分,我是否必须定义value作为参考 多谢各位 您的问题在于,您认为这是强制性的(有条件地分配给变量),而不是功能性的(将名称绑定到表达式的结果): 如前所述,功能性方法通常更可取 但是,在某些情况下,您可能希望使用ocaml的命

我想表达以下几点:

if b then
  let value = ... in
else
  let value = .... in
let double = value * 2
但是Ocaml似乎不允许这种语法。如果我不想重复
let double=value*2
部分,我是否必须定义
value
作为参考


多谢各位

您的问题在于,您认为这是强制性的(有条件地分配给变量),而不是功能性的(将名称绑定到表达式的结果):


如前所述,功能性方法通常更可取

但是,在某些情况下,您可能希望使用ocaml的命令式功能:

let value = ref 2;;

begin
if 1=2 then
value := 4
else
value := 3
end;
let double = !value * 2
请注意,需要确保if分支和else分支中的表达式类型必须相同(此处为unit),否则编译器会抱怨(当然)

let value = ref 2;;

begin
if 1=2 then
value := 4
else
value := 3
end;
let double = !value * 2