author Jim Pryor Tue, 26 Oct 2010 14:26:07 +0000 (10:26 -0400) committer Jim Pryor Tue, 26 Oct 2010 14:26:07 +0000 (10:26 -0400)
This reverts commit f91578902b8306ab3e52fb172637405cb8e3fb42.

 assignment5.mdwn patch | blob | history

index 61096c4..02c0ac4 100644 (file)
@@ -35,38 +35,38 @@ Types and OCaml

2.     Throughout this problem, assume that we have

2.     Throughout this problem, assume that we have

-               let rec omega x = omega x;;
+               let rec blackhole x = blackhole x;;

All of the following are well-typed.
Which ones terminate?  What are the generalizations?

All of the following are well-typed.
Which ones terminate?  What are the generalizations?

-               omega;;
+               blackhole;;

-               omega ();;
+               blackhole ();;

-               fun () -> omega ();;
+               fun () -> blackhole ();;

-               (fun () -> omega ()) ();;
+               (fun () -> blackhole ()) ();;

-               if true then omega else omega;;
+               if true then blackhole else blackhole;;

-               if false then omega else omega;;
+               if false then blackhole else blackhole;;

-               if true then omega else omega ();;
+               if true then blackhole else blackhole ();;

-               if false then omega else omega ();;
+               if false then blackhole else blackhole ();;

-               if true then omega () else omega;;
+               if true then blackhole () else blackhole;;

-               if false then omega () else omega;;
+               if false then blackhole () else blackhole;;

-               if true then omega () else omega ();;
+               if true then blackhole () else blackhole ();;

-               if false then omega () else omega ();;
+               if false then blackhole () else blackhole ();;

-               let _ = omega in 2;;
+               let _ = blackhole in 2;;

-               let _ = omega () in 2;;
+               let _ = blackhole () in 2;;

3.     This problem is to begin thinking about controlling order of evaluation.
The following expression is an attempt to make explicit the

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,

However,

-               let rec omega x = omega x in
-               if true then omega else omega ();;
+               let rec blackhole x = blackhole x in
+               if true then blackhole else blackhole ();;

terminates, but

terminates, but

-               let rec omega x = omega x in
+               let rec blackhole x = blackhole x in
let b = true in
let b = true in
-               let y = omega in
-               let n = omega () in
+               let y = blackhole in
+               let n = blackhole () in
match b with true -> y | false -> n;;

does not terminate.  Incidentally, `match bool with true -> yes |
match b with true -> y | false -> n;;

does not terminate.  Incidentally, `match bool with true -> yes |