Вообще говоря, стандарт ANSI CL не определяет подробности реализации, в том числе такие, как производительность.Другим примером является удаление хвостовых вызовов, предписанное Схемой, но не CL.Это, конечно, не означает, что авторы стандарта не обращали внимания на производительность (см. Раздел «Влияние на производительность» в каждой проблеме записи).
Тем не менее, вы можете безопаснопредположим, что elt
равно O(1)
на vector
с (включая строку с).
Я не думаю elt
используется очень часто, хотя - в основном потому, что обычно известно, действительно ли используется vector
или list
.Использование aref
/ char
/ nth
служит дополнительной документацией кода.
PS.Логическое обоснование этого разительного различия между CL и Scheme заключается в том, что происхождение Scheme заключается в обучении : его пользователями являются новые студенты, которые должны изучать компьютерное программирование как методологию выражения идей об алгоритмах, таким образом, они должны иметь относительно простыеинструмент с четко определенным поведением.История ANSI CL показывает, что этот стандарт стал результатом попытки нескольких существующих поставщиков выработать общую основу для лучшей мобильности - чтобы, так сказать, сделать конкуренцию более справедливой.Аудитория - опытные программисты, которые знают, что такое торговля, и могут понять компромиссы производительности.