Emacs-Lisp jest językiem napisanym dynamicznie. Oznacza to, że potrzebujesz tagów typu w czasie wykonywania. Jeśli chciałbyś pracować z liczbami, zwykle musiałbyś spakować je do jakiegoś znaczonego kontenera, na który możesz wskazać (np. "Skrzynkowo" je), ponieważ nie ma sposobu na odróżnienie wskaźnika od liczby całkowitej maszyny w czasie wykonywania bez jakiegoś schematu oznaczania.
Ze względów wydajnościowych, większość implementacji Lisp nie wykorzystuje surowych wskaźników, ale to, co myślę nazywa się deskryptorami. Te deskryptory są zwykle pojedynczym słowem maszynowym, które może reprezentować wskaźnik, niezakodowany numer (tak zwany fixnum) lub jedną z wielu innych zakodowanych danych struktur (często warto też specjalnie kodować NIL i komórki cons, na przykład).
Oczywiście, jeśli dodasz tag typu, nie masz pełnych 32 bitów dla numeru, więc pozostało ci 26 bitów jak na Schemacie MIT lub 29 bitów jak w Emacsie lub innym liczba bitów, których nie używasz do oznaczania.
Niektóre implementacje różnych języków dynamicznych rezerwują wiele znaczników dla pakietów poprawek, aby mogły dostarczyć 30-bitowych lub nawet 31-bitowych poprawek. SBCL jest jedną z implementacji Common Lisp, która jest does this. Nie sądzę jednak, żeby komplikacja, która to powoduje, była warta dla Emacsa. Jak często potrzebujesz szybkiej 30-bitowej arytmetyki fixnum w przeciwieństwie do 29-bitowej arytmetyki fixnum w edytorze tekstu, który nawet nie kompiluje swojego kodu Lisp do kodu maszynowego (lub nie? Nie pamiętam, właściwie) ? Czy piszesz klienta distributed.net w Emacs-Lisp? Lepiej przejdź do Common Lisp, a potem!;)
Więc fixnums nie są tak naprawdę, jak chcesz. Naprawdę chcesz wykonywać operacje na liczbach całkowitych, które symulują arytmetykę maszyny. Mógłbym się rozwinąć, ale prawdopodobnie przyda się to innym odwiedzającym stronę, jeśli otworzy się na to nowe pytanie. –