Полноценный Lisp помещается всего в 99 строк C, включая:
Полноценный Lisp помещается всего в 99 строк C, включая: - 21 примитив - REPL - сборщик мусора Cheney GC - числа с плавающей точкой - указатели - типы значений При этом обошлось без `struct`-тегов, внешних библиотек и динамических аллокаций. Главный прием — NaN boxing. В IEEE 754 остаются лишние биты в специальных NaN-значениях, которые можно использовать как скрытое хранилище: - часть битов для кодирования типа - до 48 бит под указатель Обычные double при этом остаются просто числами. Так одно 64-битное значение может представлять число, указатель и другие типы. Пример того, как можно эффективно использовать формат IEEE 754 для создания компактного рантайма языка.
Канал в каталоге MAXimeter
13 027 подписчиков · IT и технологии