OCaml是否可以创建单个if(没有else)

OCaml是否可以创建单个if(没有else),ocaml,control-structure,Ocaml,Control Structure,是否可以创建单个if(无else)? 如果阅读Ocaml手册§6.7.2节,则可以使用一个 只有当then部分(因此整个if表达式)为单元类型时,才可能避免使用else。比如说 let x = 3 in ( if x > 0 then Printf.printf "x is %d\n" x ); x + 5 ;; 应打印x为3,并作为值8返回 一般规则是如果κ那么τ等同于如果κ那么τelse(),因此“then part”τ必须是单位类型,“else part”默认为(),因

是否可以创建单个if(无else)? 如果阅读Ocaml手册§6.7.2节,则可以使用一个

只有当
then
部分(因此整个
if
表达式)为
单元类型时,才可能避免使用
else
。比如说

let x = 3 in
   ( if x > 0 then Printf.printf "x is %d\n" x );
   x + 5
;;
应打印
x为3
,并作为值8返回

一般规则是
如果κ那么τ
等同于
如果κ那么τelse()
,因此“then part”
τ
必须是
单位
类型,“else part”默认为
()
,因此整个
如果
单位
类型

甚至不会编译,因为
“abc”
不是
单元类型(比如
()
是)

有时,您可能会使用
然后
部分上的
忽略
函数(from)强制将其设置为
单元
类型(但只有当它具有显著性时才值得;如果您将
忽略“abc”
替换为
忽略“abc”
,则我的错误示例将编译,但仍然无用)


但是,不要忘记,Ocaml只有表达式(但没有任何语句)。副作用表达式通常是
unit
类型(但是您可以定义一个函数,该函数计算一些非
单元
结果,并且有一个有用的副作用)。

if语句
标记不适用于Ocaml。Ocaml没有语句,只有表达式!
let x = 3 in ( if x > 0 then "abc" ); x + 7 (*faulty example*)