Write the fringe-enumeration function. It should work on the implementation of
trees you designed in the previous step.
-
-(See [[hints/Assignment 4 hint 3]] if you need some hints.)
</OL>
notes](/week3/#index4h2) as a model, construct a pair `Y1` and `Y2` that behave
in the way described.
-(See [[hints/Assignment 4 hint 4]] if you need some hints.)
+(See [[hints/Assignment 4 hint 3]] if you need some hints.)
</OL>
-Hints for enumerating a tree's fringe.
+Hints for Y1,Y2.
+
+* Begin by trying to define `X1` and `X2` directly, then once they're working, you can abstract back to a pair of combinators `Y1` and `Y2` that generate `X1` and `X2` for a given pair of arguments `T1` and `T2`.
+
+ You want:
+
+ X1 <~~> T1 X1 X2 and
+ X2 <~~> T2 X1 X2
+
+* X1 is presumably going to have some form like:
+
+ (\elem1 elem2 ... (T1
+ (do-something-with-the-elems-to-make-X1)
+ (do-something-with-the-elems-to-make-X2)
+ ))
+ some-elem1 some-elem2 ...
+
+ Right? What will the form of X2 be?
+
+* Can you see how to go on?
+
+* Call the displayed abstract above `(\elem1 elem2 ... (...))` "elem0". What's the relation between `X1`, `elem0`, `elem1`, `elem2`...?
+
+* Go on, now you can do it.
+
+++ /dev/null
-Hints for Y1,Y2.
-
-* Begin by trying to define `X1` and `X2` directly, then once they're working, you can abstract back to a pair of combinators `Y1` and `Y2` that generate `X1` and `X2` for a given pair of arguments `T1` and `T2`.
-
- You want:
-
- X1 <~~> T1 X1 X2 and
- X2 <~~> T2 X1 X2
-
-* X1 is presumably going to have some form like:
-
- (\elem1 elem2 ... (T1
- (do-something-with-the-elems-to-make-X1)
- (do-something-with-the-elems-to-make-X2)
- ))
- some-elem1 some-elem2 ...
-
- Right? What will the form of X2 be?
-
-* Can you see how to go on?
-
-* Call the displayed abstract above `(\elem1 elem2 ... (...))` "elem0". What's the relation between `X1`, `elem0`, `elem1`, `elem2`...?
-
-* Go on, now you can do it.
-
-