index 78cb1bd..f9f4cf2 100644 (file)
@@ -1,4 +1,18 @@
-Hints for list\_equal.
+Hints for list_equal.
+
+*      If left is [], what does right have to be for left and right to be equal? (Come on, it's not too hard, you can figure it out.)
+
+*      Suppose on the other hand that left has head left_hd and tail left_tl.
+
+       <OL type=a>
+       <LI>If right is then [], are left and right equal?
+       <LI>If right isn't [], and its head isn't equal to left_hd, are left and right equal?
+       <LI>If right isn't [] and its head *is* equal to left_hd, what else has to be the case for left and right to be equal?
+       </OL>
+
+*      Can you now write a recursive definition of the list_equal function?
+What's your base case?
+

<!--
let list_equal =
@@ -23,3 +37,24 @@ let list_equal =
; when fold is finished, check sofar-pair
(\might_be_equal right_tail. and might_be_equal (isempty right_tail))
-->
+
+<!--
+list_equal [] right      = isempty right
+list_equal (hd:tl) right = and (not (isempty right))
+                            (list_equal tl (tail right))
+
+Rearangement:
+
+list_equal []      = \right -> isempty right
+list_equal (hd:tl) = let prev = list_equal tl
+                     in \right -> and (not (isempty right))