does not terminate. Incidentally, using the shorter `match bool with true -> yes | false -> no` rather than the longer `let b = bool ... in match b with ...` *would* work as we desire. But your assignment is to control the evaluation order *without* using the special evaluation order properties of OCaml's native `if` or of its `match`. That is, you must keep the `let b = ... in match b with ...` structure in your answer, though you are allowed to adjust what `b`, `y`, and `n` get assigned to.
- Here's a hint. (WHERE?)
-
- <!-- Use thunks! (want more help?) -->
-
- <!--
- What does
- let x = (fun () -> 2) in
- let y = (fun () -> 3) in
- match true with true -> x | false -> y
- evaluate to?
- -->
-
+ Here's a [[hint|assignment5 hint1]].