From f91578902b8306ab3e52fb172637405cb8e3fb42 Mon Sep 17 00:00:00 2001 From: Jim Pryor Date: Tue, 26 Oct 2010 10:20:44 -0400 Subject: [PATCH] Revert "ass5: omega->blackhole" This reverts commit 0d85c76d0d37b32bf99483b86828a7d2829db44e. --- assignment5.mdwn | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/assignment5.mdwn b/assignment5.mdwn index 02c0ac4d..61096c4e 100644 --- a/assignment5.mdwn +++ b/assignment5.mdwn @@ -35,38 +35,38 @@ Types and OCaml 2. Throughout this problem, assume that we have - let rec blackhole x = blackhole x;; + let rec omega x = omega x;; All of the following are well-typed. Which ones terminate? What are the generalizations? - blackhole;; + omega;; - blackhole ();; + omega ();; - fun () -> blackhole ();; + fun () -> omega ();; - (fun () -> blackhole ()) ();; + (fun () -> omega ()) ();; - if true then blackhole else blackhole;; + if true then omega else omega;; - if false then blackhole else blackhole;; + if false then omega else omega;; - if true then blackhole else blackhole ();; + if true then omega else omega ();; - if false then blackhole else blackhole ();; + if false then omega else omega ();; - if true then blackhole () else blackhole;; + if true then omega () else omega;; - if false then blackhole () else blackhole;; + if false then omega () else omega;; - if true then blackhole () else blackhole ();; + if true then omega () else omega ();; - if false then blackhole () else blackhole ();; + if false then omega () else omega ();; - let _ = blackhole in 2;; + let _ = omega in 2;; - let _ = blackhole () in 2;; + let _ = omega () in 2;; 3. This problem is to begin thinking about controlling order of evaluation. The following expression is an attempt to make explicit the @@ -104,15 +104,15 @@ and that "bool" is any boolean. Then we can try the following: However, - let rec blackhole x = blackhole x in - if true then blackhole else blackhole ();; + let rec omega x = omega x in + if true then omega else omega ();; terminates, but - let rec blackhole x = blackhole x in + let rec omega x = omega x in let b = true in - let y = blackhole in - let n = blackhole () in + let y = omega in + let n = omega () in match b with true -> y | false -> n;; does not terminate. Incidentally, `match bool with true -> yes | -- 2.11.0