add plotkin link
[lambda.git] / assignment8.mdwn
index 42b22e1..f09556f 100644 (file)
@@ -64,7 +64,7 @@
                        ;;
 
 
-2.     Here's another implementation of the same-fringe function, in Scheme. It's taken from <http://c2.com/cgi/wiki?SameFringeProblem>. It uses thunks to delay the evaluation of code that computes the tail of a list of a tree's fringe. It also involves passing continuations (`tailk`s) as arguments. Your assignment is to fill in the blanks in the code, **and also to supply comments to the code,** to explain what every significant piece is doing. Don't forget to supply the comments, this is an important part of the assignment.
+2.     Here's another implementation of the same-fringe function, in Scheme. It's taken from <http://c2.com/cgi/wiki?SameFringeProblem>. It uses thunks to delay the evaluation of code that computes the tail of a list of a tree's fringe. It also involves passing "the rest of the enumeration of the fringe" as a thunk argument (`tail-thunk` below). Your assignment is to fill in the blanks in the code, **and also to supply comments to the code,** to explain what every significant piece is doing. Don't forget to supply the comments, this is an important part of the assignment.
 
        This code uses Scheme's `cond` construct. That works like this;
 
        Here is the implementation:
 
                (define (lazy-flatten tree)
-                 (letrec ([helper (lambda (tree tailk)
+                 (letrec ([helper (lambda (tree tail-thunk)
                                  (cond
                                    [(pair? tree)
-                                     (helper (car tree) (lambda () (helper _____ tailk)))]
-                                   [else (cons tree tailk)]))])
+                                     (helper (car tree) (lambda () (helper _____ tail-thunk)))]
+                                   [else (cons tree tail-thunk)]))])
                    (helper tree (lambda () _____))))
                
                (define (stream-equal? stream1 stream2)