X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=implementing_trees.mdwn;h=c428228f2bd56867ebf0d12e35fa61e652911e97;hp=f83823a92d126cfb0ebab4c1fcc718d8b4e696f3;hb=41542591768c00d3a395a458739739ad2dcbea59;hpb=3d89c06687f5fde9730a16b04c0ae0a241dcf5cb;ds=sidebyside
diff --git a/implementing_trees.mdwn b/implementing_trees.mdwn
index f83823a9..c428228f 100644
--- a/implementing_trees.mdwn
+++ b/implementing_trees.mdwn
@@ -1,6 +1,9 @@
#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.
@@ -17,10 +20,10 @@ the tree's leaves that are labeled:
/ \
1 2
-Linguists often use trees of this sort. 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.
+The inner, non-leaf nodes of the tree may have associated values. But if so,
+what values they are will be determinable from the structure of the tree and the
+values of the node's left and right children. So the inner nodes don't need
+their own independent labels.
In another sort of tree, the tree's inner nodes are also labeled: