Equal? as a procedure
Two lists are said to be equal? if they contain equal elements arranged in the same order. For example,
(equal? '(this is a list) '(this is a list))
is true, but
(equal? '(this is a list) '(this (is a) list))
is false. To be more precise, we can define equal? recursively in terms of the basic eq? equality of symbols by saying that a and b are equal if they are both symbols and the symbols are eq? , or if they are both lists such that (car a) is equal? (car b) and (cdr a) is equal? (cdr b) . Using this idea, implement equal? as a procedure equal-proc? .