如何在OCaml中组合函数的布尔输出和单位输出?

如何在OCaml中组合函数的布尔输出和单位输出?,ocaml,Ocaml,如果我通过一个例子来解释我的意思会更容易 那么,我们如何编写一个以整数为参数的函数,如果该数字大于0,它将返回true并打印Good否则只返回false?有两种方法。第一个是通过提供一个验证答案的函数并使用函数“外部”的条件来分离问题。例如: 设为有效n=n>0 (*及之后*) 如果你是有效的10 然后 打印尾行“好” 否则,可以在返回值之前显示结果,例如: let是有效的n= 让结果=n>0英寸 让()= 如果结果 然后打印“好!” 结果 在第二个示例中,不管发生什么情况,最终结果(布尔值

如果我通过一个例子来解释我的意思会更容易


那么,我们如何编写一个以整数为参数的函数,如果该数字大于0,它将返回
true
并打印
Good
否则只返回
false

有两种方法。第一个是通过提供一个验证答案的函数并使用函数“外部”的条件来分离问题。例如:

设为有效n=n>0
(*及之后*)
如果你是有效的10
然后
打印尾行“好”
否则,可以在返回值之前显示结果,例如:

let是有效的n=
让结果=n>0英寸
让()=
如果结果
然后打印“好!”
结果

在第二个示例中,不管发生什么情况,最终结果(布尔值)都将返回,但如果结果为“true”,函数将显示“Good!”。

作为旁注,只要有可能,请尽量保持纯函数的纯。这意味着当一个函数返回一个值时,尽量不要在其中添加副作用(想象一下,如果有人将你的函数用作一个库,并在它返回真值时打印“Good!”,这不是期望的行为)。在X.Van de Woestyne的回答中,第一种方法被认为是更“惯用”的方法,它将保持代码干净,更易于维护