From: Chris Barker Date: Tue, 7 Dec 2010 18:02:41 +0000 (-0500) Subject: edit X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=965ee4cd27ebb4caa5ace62806e992bd2db20266 edit --- diff --git a/assignment9.mdwn b/assignment9.mdwn index 36a7015f..f476ab73 100644 --- a/assignment9.mdwn +++ b/assignment9.mdwn @@ -32,10 +32,10 @@ fringe before starting the comparison, if the fringes differ in an early position, we've wasted our time examining the rest of the trees. The second solution was to use tree zippers and mutable state to -simulate coroutines (see [[coroutines and aborts]], and [[assignment -8]]). In that solution, we pulled the zipper on the first tree until -we found the next leaf, then stored the zipper structure in the -mutable variable while we turned our attention to the other tree. +simulate coroutines (see [[coroutines and aborts]], and +[[assignment8]]). In that solution, we pulled the zipper on the first +tree until we found the next leaf, then stored the zipper structure in +a mutable variable while we turned our attention to the other tree. This solution is efficient: the zipper doesn't visit any leaves beyond the first mismatch. @@ -57,8 +57,8 @@ Two strategies for solving the problem solution. 2. Review how the continuation-flavored tree\_monadizer managed to - map a tree to a list of its leaves, in [[manipulating trees with - monads]]. Spend some time trying to understand exactly what it + map a tree to a list of its leaves, in [[manipulating trees with monads]]. + Spend some time trying to understand exactly what it does: compute the tree-to-list transformation for a tree with two leaves, performing all beta reduction by hand using the definitions for bind\_continuation, unit\_continuation and so on.