Операции со списками: Танец данных и кода

В Lispex список — это не просто структура данных; это само представление кода. Искусство манипулирования списками подобно плетению потока мысли, приданию структуры данным и вдыханию динамической жизни в код.

Эта страница представляет собой справочник по встроенным функциям, которые создают списки или манипулируют ими в Лиспексе. Эти функции дополняют функции, описанные в справочнике по основным функциям.


cons

Создает (конструирует) новый список, добавляя элемент в начало существующего списка. "Cons" — это сокращение от "construct" (конструировать).

  • Синтаксис: (cons ELEMENT LIST)
  • Аргументы:
  • ELEMENT: Новый элемент для добавления в начало.
  • LIST: Существующий список, в который будет добавлен элемент.
  • Возвращает: Новый список.
  • Выбрасывает: RuntimeError, если второй аргумент не является списком.

Пример:

(cons 1 (list 2 3 4))
;; Результат: (list 1 2 3 4)

(cons (list "a") (list "b" "c"))
;; Результат: (list (list "a") "b" "c")

append

Объединяет два списка вместе, создавая один новый, единый список.

  • Синтаксис: (append LIST_1 LIST_2)
  • Аргументы:
  • LIST_1: Первый список.
  • LIST_2: Второй список.
  • Возвращает: Новый список, содержащий все элементы из LIST_1, за которыми следуют все элементы из LIST_2.
  • Выбрасывает: RuntimeError, если любой из аргументов не является списком.

Пример:

(append (list 1 2) (list 3 4))
;; Результат: (list 1 2 3 4)

(append (list) (list 1 2))
;; Результат: (list 1 2)

nth

Возвращает элемент по указанному индексу (начиная с нуля) в списке.

  • Синтаксис: (nth LIST INDEX)
  • Аргументы:
  • LIST: Список, из которого нужно получить элемент.
  • INDEX: Целочисленный индекс извлекаемого элемента (начиная с 0).
  • Возвращает: Элемент по указанному индексу.
  • Выбрасывает:
  • RuntimeError, если LIST не является списком или INDEX не является целым числом.
  • RuntimeError, если INDEX находится за пределами допустимого диапазона (меньше 0 или больше либо равен длине списка).

Пример:

(define my-list (list "a" "b" "c"))

(nth my-list 0)
;; Результат: "a"

(nth my-list 2)
;; Результат: "c"

(nth my-list 3)
;; Выбрасывает RuntimeError: Индекс 3 вне допустимого диапазона