same fringe. For now, one straightforward way to determine this would be:
enumerate the fringe of the first tree. That gives you a list. Enumerate the
fringe of the second tree. That also gives you a list. Then compare the two
-lists to see if they're equal. (You just programmed this above.)
+lists to see if they're equal.
+
+Write the fringe-enumeration function. It should work on the
+implementation of trees you designed in the previous step, and it
+should make use of the list comparison function you wrote for question
+2. Thus you'll have to make sure you only use Church numerals as the
+labels of your leaves, though nothing enforces this self-discipline.
-Write the fringe-enumeration function. It should work on the implementation of
-trees you designed in the previous step.
</OL>
#Implementing trees#
-In [[Assignment3]] we proposed a very ad-hoc-ish implementation of trees.
+In [[Assignment3]] we proposed a very ad-hoc-ish implementation of
+trees. It had the virtue of constructing trees entirely out of lists,
+which meant that there was no need to define any special
+tree-construction functions.
Think about how you'd implement them in a more principled way. You could
use any of the version 1 -- version 5 implementation of lists as a model.
/ \
1 2
-Linguists often use trees of this sort. The inner, non-leaf nodes of the
+The inner, non-leaf nodes of the
tree do have associated values. But what values they are can be determined from
the structure of the tree and the values of the node's left and right children.
So the inner node doesn't need its own independent label.