In Scheme, symbols can be compared using eq? for equality. However, since they have garbage-collected content attached, they do not meet the predicate SCM_IMP in the short-circuit evaluation at the start of equal? This means that unequal symbols compared using equal? fall through a whole bunch of tests and end up in a general structural comparison comparing their underlying string names.
This completely sabotages the semantics symbols are intended for. Behavior for eqv? is similar but the fall-through at least is not as expensive as it is for equal? . -- David Kastrup