LINUX.ORG.RU

Сравнение списков в разных лиспах

 


0

1

Здравствуйте.

Небольшая непонятка. Насколько я понял, при сравнении списков в picolisp и newlisp сравниваются непосредственно сами списки, а не символы, указывающие на них. Это показалось мне странным, особенно в контексте производительности, учитывая, что (особенно) picolisp рвет на списочных структурах все лиспы как тузик грелку. Пруф.

picolisp:


(set 'a (1 2 3))
(set 'b (1 2 3))
(print (= a b)) # T

В newlisp то же самое.

scheme:


(define a '(1 2 3))
(define b '(1 2 3))
(write (eq? a b)) ; #f
(write (equal? a b)); #t

Разве сравнение по «указателям» не должно быть быстрей? Ведь при сравнении списков приходится каждый раз их обходить, или это не так?



Последнее исправление: phill (всего исправлений: 1)

Ответ на: комментарий от pseudo-cat

Я же говорю, это literal. Вычисляется (list 1 2 3), а в случае '(1 2 3) - это просто «готовые данные», которые не вычисляются - они уже как бы есть при запуске.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.