X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=week3.mdwn;h=477284245c5f48b88919c6b2a24ee18d9bd7d57d;hp=5d05c700b44cd86f8c6d3b541ee2dc58ab78cfad;hb=aaadc20de94685e29c35abbd865e5f35d194e7b9;hpb=20da31063b4f8c95e219e7364512054e72b6db44 diff --git a/week3.mdwn b/week3.mdwn index 5d05c700..47728424 100644 --- a/week3.mdwn +++ b/week3.mdwn @@ -126,7 +126,10 @@ With sufficient ingenuity, a great many functions can be defined in the same way ##However...## -Some computable functions are just not definable in this way. The simplest function that *simply cannot* be defined using the resources we've so far developed is the [[!wikipedia Ackermann function]]: +Some computable functions are just not definable in this way. We can't, for example, define a function that tells us, for whatever function `f` we supply it, what is the smallest integer `x` where `f x` is `true`. + +Neither do the resources we've so far developed suffice to define the +[[!wikipedia Ackermann function]]: A(m,n) = | when m == 0 -> n + 1 @@ -340,9 +343,7 @@ Two of the simplest:
Θ′ ≡ (\u f. f (\n. u u f n)) (\u f. f (\n. u u f n))
 Y′ ≡ \f. (\u. f (\n. u u n)) (\u. f (\n. u u n))
-Θ′ has the advantage that f (Θ′ f) really *reduces to* Θ′ f. - -f (Y′ f) is only convertible with Y′ f; that is, there's a common formula they both reduce to. For most purposes, though, either will do. +Θ′ has the advantage that f (Θ′ f) really *reduces to* Θ′ f. Whereas f (Y′ f) is only *convertible with* Y′ f; that is, there's a common formula they both reduce to. For most purposes, though, either will do. You may notice that both of these formulas have eta-redexes inside them: why can't we simplify the two `\n. u u f n` inside Θ′ to just `u u f`? And similarly for Y′?