X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=assignment8.mdwn;h=5a2780d8459e95e45fa07ea0de4ce26c26a88a76;hb=1c203e3ca6a3b29830af36ea6f6b3a86be93675f;hp=a66c26ae54b9b4e1dc5a86428ed7d5eabeed6c27;hpb=57e4fb87e24913780f5ed25f975986775adc068a;p=lambda.git diff --git a/assignment8.mdwn b/assignment8.mdwn index a66c26ae..5a2780d8 100644 --- a/assignment8.mdwn +++ b/assignment8.mdwn @@ -2,9 +2,10 @@ type 'a tree = Leaf of 'a | Node of ('a tree * 'a tree) - type 'a starred_tree = Root | Starring_Left of 'a starred_pair | Starring_Right of 'a starred_pair - and 'a starred_pair = { parent : 'a starred_tree; sibling: 'a tree } - and 'a zipper = { tree : 'a starred_tree; filler: 'a tree };; + type 'a starred_level = Root | Starring_Left of 'a starred_nonroot | Starring_Right of 'a starred_nonroot + and 'a starred_nonroot = { parent : 'a starred_level; sibling: 'a tree };; + + type 'a zipper = { level : 'a starred_level; filler: 'a tree };; let rec move_botleft (z : 'a zipper) : 'a zipper = (* returns z if the targetted node in z has no children *) @@ -22,7 +23,7 @@ let new_zipper (t : 'a tree) : 'a zipper = - {tree = Root; filler = t} + {level = Root; filler = t} ;;   @@ -64,7 +65,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 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 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. This code uses Scheme's `cond` construct. That works like this;