Running the following code:
let input_bool () = input_char stdin = 't'
let () =
if
let x = input_bool () in
let y = input_bool () in
x || y
then
print_endline "yes"
At runtime I am prompted only for a single char and, when entering t, the output yes is immediately printed. Can anyone explain why the second call to input_bool () is not happening?
EDIT: the same behaviour on changing the || to &&, so I assume it’s not explained by the compiler doing some fancy inlining.
