X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=hints%2Fassignment_4_hint_3_alternate_2.mdwn;h=a0ed78dce3d0e36a751939a26c97accd3954394c;hp=b2ddef824a99a76b89644bdc9d4bd0a82502a6da;hb=67ed83b1ad44c7590cf7d7c1ec3a079bc5140a61;hpb=675ab516c47d0bbf6fe8501bd15b0e044996e327 diff --git a/hints/assignment_4_hint_3_alternate_2.mdwn b/hints/assignment_4_hint_3_alternate_2.mdwn index b2ddef82..a0ed78dc 100644 --- a/hints/assignment_4_hint_3_alternate_2.mdwn +++ b/hints/assignment_4_hint_3_alternate_2.mdwn @@ -83,7 +83,9 @@ In the original, `h` was somehow *half* of the fixed point, so that `h h` computed the fixed point. In the schema here, `h1` had better be a function which, when you give it suitable arguments, computes the first fixed point `X1` (likewise for `h2` wrt the second fixed point -`X2`). Then we can arrange for our definition to return the desired +`X2`). + +Then we can arrange for our definition to return the desired fixed point like this: let Y1 = \pe po . (\h1 h2 . pe (h1 [blah])(h2 [blah])) @@ -91,7 +93,7 @@ fixed point like this: (\h1 h2 . ...) The term in the middle line is going in for `h1`, so it had better -be the kind of thing which, when you give it suitable arguments, +also be the kind of thing which, when you give it suitable arguments, computes a fixed point for `pe`: let Y1 = \pe po . (\h1 h2 . pe (h1 [blah]) (h2 [blah])) @@ -102,7 +104,7 @@ But the third line must help compute a fixed point for `po`. All we need to do is figure out what the arguments to `h1` and `h2` ought to be. Final guess: in the original, `h` took one argument (a -copy of itself), so once again, we'll need two arguments. Here's +copy of itself), so once again, here we'll need two arguments. Here's where the mutual recursion comes in: the two arguments to `h1` are a copy of itself, and a copy of `h2` (symmetrically for `h2`). So the complete definition is