YLISP 3.7 WIN32
Y L i s p 3.7
= Недостающие стандартные средства Коммон Лиспа =
В данном файле перечисляются наиболее значительные пробелы данной реа-
лизации языка Коммон Лисп по сравнению со стандартом [CLTL]. Несогласо-
ванности по объектно-ориентированному расширению можно найти в файле
CLOS.TXT.
Отсутствующие встроенные типы данных
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ARRAY Не поддерживаются настраиваемые (adjustable) массивы и
массивы, смещенные относительно существующих
(displaced-to).
BIT-VECTOR Тип `битовый вектор'.
COMPLEX Тип комплексных чисел не совсем полон.
PATHNAME Тип имен путей файлов, хотя функции merge-pathnames,
make-pathname и pathname-name с друзьями наличествуют и
оперируют обычными Лисп-строками, которые представляют пути
файлов.
PACKAGE Тип пакетов, т.е. пространств имен символов, хотя функции
apropos, apropos-list и intern допускают в качестве необяза-
тельного аргумента имена `виртуальных' пакетов: lisp, user и
keyword.
RATIO Тип дробно-рациональных чисел.
INTEGER Целые числа имеются, но их максимальная длина 32/64 бита,
в зависимости от сборки.
READTABLE В системе наличествует лишь одна встроенная таблица чтения,
которая всем знакам с ASCII-кодами, большими 127, приписывает
синтаксический тип `составляющий' (constituent).
RANDOM-STATE
Тип `состояние генератора случайных чисел' не поддерживается,
хотя в системе имеются генератор равномерно распределенных
случайных чисел с единственным состоянием и функция random.
Ввиду указанной неполноты системы типов, некоторые функции имеют
меньшее число принимаемых аргументов, например, для make-array недопус-
тимо задавать ключи :adjustable, :fill-pointer, :displaced-to и
:displaced-index-offset.
Неполнота лексического контекста
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Система YLisp использует динамический контекст для tag-меток и имен
блоков. Как следствие, в лексическом замыкании сохраняются лишь лекси-
ческие связи переменных (и лямбда-выражение). Отсутствуют также лекси-
ческие функции и макросы (flet, macrolet), а специальная форма labels
позволяет динамически связать с символами новые определения функций.
Тело функции не заключается в неявный блок, поименованный символом
функции. Так что недопустим возврат значения функции |