Песочница

Процедуры списков и составных данных

Списки, пары, векторы и байтовые векторы имеют явные границы правильного списка, индекса, идентичности и изменения.

Проверьте запуском

LISPEX
(list (list-ref (list 10 20 30) 1) (vector-ref #(4 5) 0))

Наблюдаемый результат

OUTPUT
(20 4)

Как рассуждать

  • Доступ и поиск включают семейство c...r, list-ref, list-tail, варианты member/assoc, копирование, добавление, разворот и конструкторы.
  • Для векторов доступны создание, чтение, копирование, отображение и vector-set!. Байтовые векторы в этом профиле только для чтения.
  • Неверный домен пары или списка даёт E310, неверный индекс или диапазон даёт E311, а неверный тип примитива даёт E312.

Сигнатуры агрегатов

СигнатураРезультат / идентичностьОшибка
(cons a d)новая паранет
(car pair) / (cdr pair)сохранённый компонентE310 не пара
(list-ref proper-list k)элемент kE312 нецелое, E311 диапазон, E310 список, который не заканчивается правильно
(vector-ref vector k) / (vector-set! vector k value)элемент / ноль значений, идентичность сохраняетсяE312 тип, E311 диапазон
(bytevector-u8-ref bytevector k)точное целое 0..255E312 тип, E311 диапазон

Частая ошибка

Мутаторы пар и байтовых векторов отложены, а цитированные составные данные менять нельзя.

Куда дальше

Какие составные значения существуют и какие из них изменяемы, сказано в руководстве, а место этих имён среди остальных семейств показывает указатель.

Данные и составные типы · Указатель процедур