История изменений
Исправление Zubok, (текущая версия) :
Без списка?
Без списка, да. Даже тип соответствующий не существует. Просто multiple values. Фича как бы интересная, но служит, в общем-то, оптимизационным целям. Не создается в памяти композитный объект, отдельные результаты не cons-ятся, все передается локально.
CL-USER> (defun test-list () (list 11 "aa" 'a))
TEST-LIST
CL-USER> (defun test-values () (values 11 "aa" 'a))
TEST-VALUES
CL-USER> (test-list)
(11 "aa" A)
CL-USER> (test-values)
11
"aa"
A
CL-USER> (type-of (test-list))
CONS
CL-USER> (type-of (test-values))
(INTEGER 0 4611686018427387903)
CL-USER> (nth-value 1 (test-values))
"aa"
Исходная версия Zubok, :
Без списка?
Без списка, да. Даже тип соответствующий не существует. Просто multiple values. Фича как бы интересная, но служит, в общем-то, оптимизационным целям. Не создается в памяти композитный объект, отдельные результаты не cons-ятся, все передается локально.
CL-USER> (defun test-list () (list 11 "aa" 'a))
TEST-LIST
CL-USER> (defun test-values () (values 11 "aa" 'a))
TEST-VALUES
CL-USER> (test-list)
(11 "aa" A)
CL-USER> (test-values)
11
"aa"
A
CL-USER> (type-of (test-list))
CONS
CL-USER> (type-of (test-values))
(INTEGER 0 4611686018427387903)
CL-USER> (nth-value 1 (test-values))
"aa"