X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=assignment8.mdwn;h=f09556f075c06c75c835b94cbc2cb7ff1fedf6f1;hp=256b2ce95a021045763f4b378541a7d5b17020dc;hb=2daa38a304aaee91b9d3ac57274cfa7d63977198;hpb=3562cbe6843f487857521a01f5291a2e578a7ed9;ds=sidebyside diff --git a/assignment8.mdwn b/assignment8.mdwn index 256b2ce9..f09556f0 100644 --- a/assignment8.mdwn +++ b/assignment8.mdwn @@ -45,9 +45,9 @@ | Some z' -> Some (move_botleft z') (* return saved label *) in Some current + ) | None -> (* we've finished enumerating the fringe *) None - ) (* return the next_leaf function *) in next_leaf ;; @@ -64,7 +64,7 @@ ;; -2. Here's another implementation of the same-fringe function, in Scheme. It's taken from . 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 . 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; @@ -109,11 +109,11 @@ 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)