lists-to-contin tweaks
[lambda.git] / assignment8.mdwn
index 5a2780d..256b2ce 100644 (file)
         
 
                let make_fringe_enumerator (t: 'a tree) =
-                       (* create a zipper targetting the root of t *)
-                       let zstart = new_zipper t
-                       in let zbotleft = move_botleft zstart
+                       (* create a zipper targetting the botleft of t *)
+                       let zbotleft = move_botleft (new_zipper t)
                        (* create a refcell initially pointing to zbotleft *)
                        in let zcell = ref (Some zbotleft)
                        (* construct the next_leaf function *)
                        in let next_leaf () : 'a option =
                                match !zcell with
-                               | None -> (* we've finished enumerating the fringe *)
-                                       None
                                | Some z -> (
                                        (* extract label of currently-targetted leaf *)
                                        let Leaf current = z.filler
@@ -48,6 +45,8 @@
                                                | 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