From: Jim Pryor Date: Mon, 6 Dec 2010 08:21:24 +0000 (-0500) Subject: assignment8 call it tail-thunk not tailk, thanks Douwe X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=7c54259fffc321ef49673ea7c8e8228c7d08ff86;ds=sidebyside assignment8 call it tail-thunk not tailk, thanks Douwe Signed-off-by: Jim Pryor --- diff --git a/assignment8.mdwn b/assignment8.mdwn index 42b22e17..f09556f0 100644 --- a/assignment8.mdwn +++ b/assignment8.mdwn @@ -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)