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`.
  1. If `right` is then `[]`, are `left` and `right` equal?
  2. If `right` isn't `[]`, and its head isn't equal to `left_hd`, are `left` and `right` equal?
  3. 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?
* Can you now write a recursive definition of the `list_equal` function? What's your base case?