экв? на числах непредсказуемо. Это зависит от реализации или нет, являются ли числовые литералы разделенными так, чтобы одни и те же числа находились в одном и том же месте в памяти. Например, язык Racket недавно решил интернировать такие литералы во время чтения. http://www.mail-archive.com/dev@racket-lang.org/msg04893.html
Вы не будете знать наверняка, будет ли среда выполнения языковой реализации представлять каждое число уникальным образом. Это может повлиять на значения в штучной упаковке, такие как float и bignums. Вот почему = существует как предикат для чисел: он проверяет равенство содержимого, а не равенство мелких указателей.
Это не относится только к таким языкам, как Scheme: например, равенство и равенство встречаются в Python ( равно против == ).