equal = (x, y) => atom(x) ? (atom(y) ? eq(x, y) : false)
  : equal(car(x), car(y)) ? equal(cdr(x), cdr(y)) : false

assert(equal('A', 'A'))
assert(equal(list('A', 'B'),
             list('A', 'B')))
assert(!equal('A',
              null))
assert(!equal('A',
              list('A', 'B')))
