为什么不能在OCaml中调用while循环中的函数?

为什么不能在OCaml中调用while循环中的函数?,ocaml,Ocaml,我尝试使用while循环调用函数n次。我已经做了一个简单的例子,返回这个错误警告10:这个表达式应该有unit类型 let max a b = if a > b then a else b ;; let i = ref 0;; while !i <= 5 do (* function that is called i times *) max 2 !i ; i := !i + 1; print_int !i done;; 如何使用while或for循环n次调用函数?这只

我尝试使用while循环调用函数n次。我已经做了一个简单的例子,返回这个错误警告10:这个表达式应该有unit类型

let max a b =
if a > b then a else b
;;

let i = ref 0;;

while !i <= 5 do

(* function that is called i times *)
max 2 !i ;

i := !i + 1;

print_int !i

done;;

如何使用while或for循环n次调用函数?

这只是一个警告,与循环无关。它只是指出您正在调用一个函数,但忽略了它的结果。通常,这种情况是一个意外的错误。在您的示例中,对max的调用实际上是无用的

如果你想让它安静下来,你可以通过这样做来忽略结果

ignore (max 2 !i)

这只是一个警告,与循环无关。它只是指出您正在调用一个函数,但忽略了它的结果。通常,这种情况是一个意外的错误。在您的示例中,对max的调用实际上是无用的

如果你想让它安静下来,你可以通过这样做来忽略结果

ignore (max 2 !i)

嗨,谢谢你的回复。为什么函数的结果被忽略?我希望它能打印出我调用的函数的结果recall@bryan1991如果要打印结果,请将忽略替换为调用print\u int或Printf.Printf%d\n。在REPL之外,OCaml和大多数语言一样,除非您告诉它,否则不会打印表达式的结果。在REPL中,它仍然只打印整个表达式的结果,而不是每个子表达式。嗨,谢谢你的回复。为什么函数的结果被忽略?我希望它能打印出我调用的函数的结果recall@bryan1991如果要打印结果,请将忽略替换为调用print\u int或Printf.Printf%d\n。在REPL之外,OCaml和大多数语言一样,除非您告诉它,否则不会打印表达式的结果。在REPL中,它仍然只打印整个表达式的结果,而不是每个子表达式的结果。