Последовательности
В этом разделе описываются функции, принимающие любой тип последовательности.
- Функция: sequencep объект
Эта функция возвращает
tесли объект является списком, вектором, строкой, bool-вектором или таблицей символов,nilв противном случае. См. такжеseqpниже.
- Функция: length последовательность
-
Эта функция возвращает количество элементов в последовательности. Функция сигнализирует об ошибке
wrong-type-argumentесли аргумент не является последовательностью или является точечным списком; она сигнализирует об ошибкеcircular-listесли аргумент является циклическим списком. Для таблицы символов возвращаемое значение всегда на единицу больше максимального кода символа Emacs.См. Определение safe-length, для связанной функции
safe-length.(length '(1 2 3)) ⇒ 3(length ()) ⇒ 0(length "foobar") ⇒ 6(length [1 2 3]) ⇒ 3(length (make-bool-vector 5 nil)) ⇒ 5
См. также string-bytes, в Представления текста.
Если вам необходимо вычислить ширину строки на экране, вы должны использовать string-width (см. Размер отображаемого текста), а не length, так как length подсчитывает только количество символов, но не учитывает ширину отображения каждого символа.
- Функция: length< последовательность длина
Возвращает не-
nilесли последовательность короче длины. Это может быть более эффективным, чем вычисление длины последовательности, если последовательность является длинным списком.
- Функция: length> последовательность длина
Возвращает не-
nilесли последовательность длиннее длины.
- Функция: length= последовательность длина
Возвращает не-
nilесли длина последовательности равна длине.
- Функция: elt последовательность индекс
-
Эта функция возвращает элемент последовательности с индексом индекс. Допустимые значения индекс — целые числа от 0 до на единицу меньше длины последовательности. Если последовательность является списком, значения, выходящие за пределы диапазона, ведут себя так же, как для
nth. См. Определение nth. В противном случае значения, выходящие за пределы диапазона, вызывают ошибкуargs-out-of-range.(elt [1 2 3 4] 2) ⇒ 3(elt '(1 2 3 4) 2) ⇒ 3;; We usestringto show clearly which charactereltreturns. (string (elt "1234" 2)) ⇒ "3"(elt [1 2 3 4] 4) error→ Args out of range: [1 2 3 4], 4(elt [1 2 3 4] -1) error→ Args out of range: [1 2 3 4], -1Эта функция обобщает
aref(см. Функции массивов) иnth(см. Определение nth).
- Функция: copy-sequence seqr
-
Эта функция возвращает копию seqr, которая должна быть либо последовательностью, либо записями. Копия — это такой же тип объекта, как и оригинал, и содержит те же элементы в том же порядке. Однако, если seqr пустой, как строка или вектор нулевой длины, возвращаемое значение этой функции может не быть копией, а пустым объектом того же типа и идентичным seqr.
Сохранение нового элемента в копию не влияет на исходное seqr, и наоборот. Однако элементы копии не являются копиями; они идентичны (
eq) элементам оригинала. Следовательно, изменения, внесенные в эти элементы, как обнаруженные через копию, также видны в оригинале.Если аргумент является строкой с текстовыми свойствами, список свойств в копии сам является копией, не совмещенной со списком свойств оригинала. Однако фактические значения свойств совмещены. См. Текстовые свойства.
Эта функция не работает для точечных списков. Попытка копирования циклического списка может привести к бесконечному циклу.
См. также
appendв Создание списков,concatв Создание строк иvconcatв Функции векторов, для других способов копирования последовательностей.(setq bar (list 1 2)) ⇒ (1 2)(setq x (vector 'foo bar)) ⇒ [foo (1 2)](setq y (copy-sequence x)) ⇒ [foo (1 2)](eq x y) ⇒ nil(equal x y) ⇒ t(eq (elt x 1) (elt y 1)) ⇒ t;; Replacing an element of one sequence. (aset x 0 'quux) x ⇒ [quux (1 2)] y ⇒ [foo (1 2)];; Modifying the inside of a shared element. (setcar (aref x 1) 69) x ⇒ [quux (69 2)] y ⇒ [foo (69 2)]
- Функция: reverse последовательность
-
Эта функция создает новую последовательность, элементы которой являются элементами последовательности, но в обратном порядке. Исходный аргумент последовательность не изменяется. Обратите внимание, что таблицы символов не могут быть обращены.
(setq x '(1 2 3 4)) ⇒ (1 2 3 4)(reverse x) ⇒ (4 3 2 1) x ⇒ (1 2 3 4)(setq x [1 2 3 4]) ⇒ [1 2 3 4](reverse x) ⇒ [4 3 2 1] x ⇒ [1 2 3 4](setq x "xyzzy") ⇒ "xyzzy"(reverse x) ⇒ "yzzyx" x ⇒ "xyzzy"
- Функция: nreverse последовательность
-
Эта функция изменяет порядок элементов в последовательности. В отличие от
reverse, исходная последовательность может быть изменена.Например:
(setq x (list 'a 'b 'c)) ⇒ (a b c)x ⇒ (a b c) (nreverse x) ⇒ (c b a);; The cons cell that was first is now last. x ⇒ (a)Чтобы избежать путаницы, мы обычно сохраняем результат
nreverseобратно в ту же переменную, что и исходный список:(setq x (nreverse x))
Вот графическое представление
nreverseнашего любимого примера,(a b c).Original list head: Reversed list: ------------- ------------- ------------ | car | cdr | | car | cdr | | car | cdr | | a | nil |<-- | b | o |<-- | c | o | | | | | | | | | | | | | | ------------- | --------- | - | -------- | - | | | | ------------- ------------
Для вектора это еще проще, потому что вам не нужно setq:
(setq x (copy-sequence [1 2 3 4])) ⇒ [1 2 3 4] (nreverse x) ⇒ [4 3 2 1] x ⇒ [4 3 2 1]Обратите внимание, что в отличие от
reverse, эта функция не работает со строками. Хотя вы можете изменить данные строки, используяaset, настоятельно рекомендуется рассматривать строки как неизменяемые, даже когда они изменяемы. См. Изменяемость.
- Функция: sort последовательность предикат
-
Эта функция сортирует последовательность стабильно. Обратите внимание, что эта функция не работает для всех последовательностей; она может быть использована только для списков и векторов. Если последовательность является списком, она изменяется деструктивно. Эта функция возвращает отсортированную последовательность и сравнивает элементы с помощью предиката. Стабильная сортировка — это такая сортировка, в которой элементы с равными ключами сортировки сохраняют свой относительный порядок до и после сортировки. Стабильность важна, когда используются последовательные сортировки для упорядочения элементов по различным критериям.
Аргумент предикат должен быть функцией, принимающей два аргумента. Она вызывается с двумя элементами последовательности. Для сортировки по возрастанию предикат должен возвращать не-
nilесли первый элемент «меньше» второго, илиnilв противном случае.Функция сравнения предикат должна давать надежные результаты для любой пары аргументов, по крайней мере, в рамках одного вызова
sort. Она должна быть антисимметричной; то есть, если a меньше b, b не должно быть меньше a. Она должна быть транзитивной — то есть, если a меньше b, а b меньше c, то a должно быть меньше c. Если вы используете функцию сравнения, которая не соответствует этим требованиям, результатsortнепредсказуем.Деструктивный аспект
sortдля списков заключается в том, что он переупорядочивает ячейки cons, образующие последовательность, изменяя CDRs. Недеструктивная функция сортировки создавала бы новые ячейки cons для хранения элементов в отсортированном порядке. Если вы хотите сделать отсортированную копию, не уничтожая оригинал, сначала скопируйте ее с помощьюcopy-sequenceи затем отсортируйте.Сортировка не изменяет CARs ячеек cons в последовательности; ячейка cons, которая изначально содержала элемент
aв последовательности, по-прежнему содержитaв своем CAR после сортировки, но теперь она появляется в другом месте в списке из-за изменения CDRs. Например:(setq nums (list 1 3 2 6 5 4 0)) ⇒ (1 3 2 6 5 4 0)(sort nums #'<) ⇒ (0 1 2 3 4 5 6)nums ⇒ (1 2 3 4 5 6)Предупреждение: Обратите внимание, что список в
numsбольше не содержит 0; это та же ячейка cons, что и раньше, но она больше не первая в списке. Не предполагайте, что переменная, которая ранее содержала аргумент, теперь содержит весь отсортированный список! Вместо этого сохраните результатsortи используйте его. Чаще всего мы сохраняем результат обратно в переменную, которая содержала исходный список:(setq nums (sort nums #'<))
Для лучшего понимания того, что такое стабильная сортировка, рассмотрим следующий пример с вектором. После сортировки все элементы, чьи
carравны 8, сгруппированы в началеvector, но их относительный порядок сохраняется. Все элементы, чьиcarравны 9, сгруппированы в концеvector, но их относительный порядок также сохраняется:(setq vector (vector '(8 . "xxx") '(9 . "aaa") '(8 . "bbb") '(9 . "zzz") '(9 . "ppp") '(8 . "ttt") '(8 . "eee") '(9 . "fff"))) ⇒ [(8 . "xxx") (9 . "aaa") (8 . "bbb") (9 . "zzz") (9 . "ppp") (8 . "ttt") (8 . "eee") (9 . "fff")](sort vector (lambda (x y) (< (car x) (car y)))) ⇒ [(8 . "xxx") (8 . "bbb") (8 . "ttt") (8 . "eee") (9 . "aaa") (9 . "zzz") (9 . "ppp") (9 . "fff")]См. Сортировка для получения дополнительных функций, выполняющих сортировку. См.
documentationв Доступ к документации для полезного примераsort.
Библиотека seq.el предоставляет следующие дополнительные макросы и функции для работы с последовательностями, начинающиеся с seq-. Для их использования необходимо предварительно загрузить библиотеку seq.
Все функции, определенные в этой библиотеке, лишены побочных эффектов; т.е. они не изменяют ни одну последовательность (список, вектор или строку), которую вы передаете в качестве аргумента. Если не указано иное, результатом является последовательность того же типа, что и вход. Для тех функций, которые принимают предикат, это должна быть функция одного аргумента.
Библиотека seq.el может быть расширена для работы с дополнительными типами последовательных структур данных. Для этой цели все функции определяются с использованием cl-defgeneric. См. Общие функции для получения дополнительной информации об использовании cl-defgeneric для добавления расширений.
- Функция: seq-elt индекс последовательности
-
Эта функция возвращает элемент sequence по указанному индексу, который является целым числом, значение которого должно быть от нуля до длины sequence минус один. Для значений вне диапазона для встроенных типов последовательностей
seq-eltведет себя какelt. Для подробностей см. Определение elt.(seq-elt [1 2 3 4] 2) ⇒ 3
seq-eltвозвращает места, которые можно установить с помощьюsetf(см. Установление обобщенных переменных).(setq vec [1 2 3 4]) (setf (seq-elt vec 2) 5) vec ⇒ [1 2 5 4]
- Функция: seq-length последовательность
Эта функция возвращает количество элементов в последовательности. Для встроенных типов последовательностей
seq-lengthведет себя какlength. См. Определение length.
- Функция: seqp объект
-
Эта функция возвращает не-
nil, если объект является последовательностью (списком или массивом), или любым другим типом последовательности, определенным с помощью универсальных функций seq.el. Это расширяемый вариантsequencep.(seqp [1 2]) ⇒ t
(seqp 2) ⇒ nil
- Функция: seq-drop последовательность n
-
Эта функция возвращает все, кроме первых n (целое число) элементов последовательности. Если n отрицательное или равно нулю, результат — последовательность.
(seq-drop [1 2 3 4 5 6] 3) ⇒ [4 5 6]
(seq-drop "hello world" -4) ⇒ "hello world"
- Функция: seq-take последовательность n
-
Эта функция возвращает первые n (целое число) элементов последовательности. Если n отрицательное или равно нулю, результат —
nil.(seq-take '(1 2 3 4) 3) ⇒ (1 2 3)
(seq-take [1 2 3 4] 0) ⇒ []
- Функция: seq-take-while предикат последовательность
-
Эта функция возвращает члены последовательности в порядке, останавливаясь перед первым, для которого предикат возвращает
nil.(seq-take-while (lambda (elt) (> elt 0)) '(1 2 3 -1 -2)) ⇒ (1 2 3)
(seq-take-while (lambda (elt) (> elt 0)) [-1 4 6]) ⇒ []
- Функция: seq-drop-while предикат последовательность
-
Эта функция возвращает члены последовательности в порядке, начиная с первого, для которого предикат возвращает
nil.(seq-drop-while (lambda (elt) (> elt 0)) '(1 2 3 -1 -2)) ⇒ (-1 -2)
(seq-drop-while (lambda (elt) (< elt 0)) [1 4 6]) ⇒ [1 4 6]
- Функция: seq-do функция последовательность
Эта функция применяет функцию к каждому элементу последовательности по очереди (вероятно, для побочных эффектов) и возвращает последовательность.
- Функция: seq-map функция последовательность
-
Эта функция возвращает результат применения функции к каждому элементу последовательности. Возвращаемое значение — список.
(seq-map #'1+ '(2 4 6)) ⇒ (3 5 7)
(seq-map #'symbol-name [foo bar]) ⇒ ("foo" "bar")
- Функция: seq-map-indexed функция последовательность
-
Эта функция возвращает результат применения функции к каждому элементу последовательности и его индексу в последовательности. Возвращаемое значение — список.
(seq-map-indexed (lambda (elt idx) (list idx elt)) '(a b c)) ⇒ ((0 a) (1 b) (2 c))
- Функция: seq-mapn функция &rest последовательности
-
Эта функция возвращает результат применения функции к каждому элементу последовательностей. Арность (см. subr-arity) функции должна соответствовать количеству последовательностей. Картирование останавливается в конце самой короткой последовательности, и возвращаемое значение — список.
(seq-mapn #'+ '(2 4 6) '(20 40 60)) ⇒ (22 44 66)
(seq-mapn #'concat '("moskito" "bite") ["bee" "sting"]) ⇒ ("moskitobee" "bitesting")
- Функция: seq-filter предикат последовательность
-
Эта функция возвращает список всех элементов в последовательности, для которых предикат возвращает не-
nil.(seq-filter (lambda (elt) (> elt 0)) [1 -1 3 -3 5]) ⇒ (1 3 5)
(seq-filter (lambda (elt) (> elt 0)) '(-1 -3 -5)) ⇒ nil
- Функция: seq-remove предикат последовательность
-
Эта функция возвращает список всех элементов в последовательности, для которых предикат возвращает
nil.(seq-remove (lambda (elt) (> elt 0)) [1 -1 3 -3 5]) ⇒ (-1 -3)
(seq-remove (lambda (elt) (< elt 0)) '(-1 -3 -5)) ⇒ nil
- Функция: seq-reduce функция последовательность начальное-значение
-
Эта функция возвращает результат вызова функции с начальным-значением и первым элементом последовательности, затем вызова функции с этим результатом и вторым элементом последовательности, и так далее. Функция должна быть функцией от двух аргументов.
Функция вызывается с двумя аргументами. начальное-значение (а затем накопленное значение) используется в качестве первого аргумента, а элементы в последовательности — в качестве второго аргумента.
Если последовательность пуста, возвращается начальное-значение без вызова функции.
(seq-reduce #'+ [1 2 3 4] 0) ⇒ 10
(seq-reduce #'+ '(1 2 3 4) 5) ⇒ 15
(seq-reduce #'+ '() 3) ⇒ 3
- Функция: seq-some предикат последовательность
-
Эта функция возвращает первое ненулевое значение, возвращаемое функцией предикат, применяемой к каждому элементу последовательности по очереди.
(seq-some #'numberp ["abc" 1 nil]) ⇒ t
(seq-some #'numberp ["abc" "def"]) ⇒ nil
(seq-some #'null ["abc" 1 nil]) ⇒ t
(seq-some #'1+ [2 4 6]) ⇒ 3
- Функция: seq-find предикат последовательность &optional значение-по-умолчанию
-
Эта функция возвращает первый элемент в последовательности, для которого предикат возвращает не-
nil. Если ни один элемент не соответствует предикату, функция возвращает значение-по-умолчанию.Обратите внимание, что эта функция имеет неоднозначность, если найденный элемент идентичен значению-по-умолчанию, так как в этом случае нельзя определить, был ли элемент найден или нет.
(seq-find #'numberp ["abc" 1 nil]) ⇒ 1
(seq-find #'numberp ["abc" "def"]) ⇒ nil
- Функция: seq-every-p предикат последовательность
-
Эта функция возвращает не-
nil, если применение предиката ко всем элементам последовательности возвращает не-nil.(seq-every-p #'numberp [2 4 6]) ⇒ t
(seq-every-p #'numberp [2 4 "6"]) ⇒ nil
- Функция: seq-empty-p последовательность
-
Эта функция возвращает не-
nil, если последовательность пуста.(seq-empty-p "not empty") ⇒ nil
(seq-empty-p "") ⇒ t
- Функция: seq-count предикат последовательность
-
Эта функция возвращает количество элементов в последовательности, для которых предикат возвращает не-
nil.(seq-count (lambda (elt) (> elt 0)) [-1 2 0 3 -2]) ⇒ 2
- Функция: seq-sort функция последовательность
Эта функция возвращает копию последовательности, отсортированную в соответствии с функцией — функцией от двух аргументов, которая возвращает не-
nil, если первый аргумент должен идти перед вторым.
- Функция: seq-sort-by функция предикат последовательность
-
Эта функция похожа на
seq-sort, но элементы последовательности преобразуются с помощью применения функции к ним перед сортировкой. Функция — функция от одного аргумента.(seq-sort-by #'seq-length #'> ["a" "ab" "abc"]) ⇒ ["abc" "ab" "a"]
- Функция: seq-contains-p последовательность элемент &optional функция
-
Эта функция возвращает не-
nil, если хотя бы один элемент в последовательности равен элементу. Если необязательный аргумент функция не равенnil, это функция от двух аргументов, используемая вместо стандартнойequal.(seq-contains-p '(symbol1 symbol2) 'symbol1) ⇒ t
(seq-contains-p '(symbol1 symbol2) 'symbol3) ⇒ nil
- Функция: seq-set-equal-p последовательность1 последовательность2 &optional testfn
-
Эта функция проверяет, содержат ли последовательность1 и последовательность2 одинаковые элементы, независимо от порядка. Если необязательный аргумент testfn не равен
nil, это функция от двух аргументов, используемая вместо стандартнойequal.(seq-set-equal-p '(a b c) '(c b a)) ⇒ t
(seq-set-equal-p '(a b c) '(c b)) ⇒ nil
(seq-set-equal-p '("a" "b" "c") '("c" "b" "a")) ⇒ t(seq-set-equal-p '("a" "b" "c") '("c" "b" "a") #'eq) ⇒ nil
- Функция: seq-position последовательность элемент &optional функция
-
Эта функция возвращает индекс первого элемента в последовательности, равного элементу. Если необязательный аргумент функция не равен
nil, это функция от двух аргументов, используемая вместо стандартнойequal.(seq-position '(a b c) 'b) ⇒ 1
(seq-position '(a b c) 'd) ⇒ nil
- Функция: seq-uniq последовательность &optional функция
-
Эта функция возвращает список элементов последовательности без дубликатов. Если необязательный аргумент функция не равен
nil, это функция от двух аргументов, используемая вместо стандартнойequal.(seq-uniq '(1 2 2 1 3)) ⇒ (1 2 3)
(seq-uniq '(1 2 2.0 1.0) #'=) ⇒ (1 2)
- Функция: seq-subseq последовательность начало &optional конец
-
Эта функция возвращает подмножество последовательности от начала до конца, оба целые числа (конец по умолчанию — последний элемент). Если начало или конец отрицательные, они отсчитываются с конца последовательности.
(seq-subseq '(1 2 3 4 5) 1) ⇒ (2 3 4 5)
(seq-subseq '[1 2 3 4 5] 1 3) ⇒ [2 3]
(seq-subseq '[1 2 3 4 5] -3 -1) ⇒ [3 4]
- Функция: seq-concatenate тип &rest последовательности
-
Эта функция возвращает последовательность типа тип, составленную из конкатенации последовательностей. Тип может быть:
vector,listилиstring.(seq-concatenate 'list '(1 2) '(3 4) [5 6]) ⇒ (1 2 3 4 5 6)
(seq-concatenate 'string "Hello " "world") ⇒ "Hello world"
- Функция: seq-mapcat последовательность &опционально тип
-
Эта функция возвращает результат применения
seq-concatenateк результату применения функции к каждому элементу последовательности. Результатом является последовательность типа тип, или список, если тип равенnil.(seq-mapcat #'seq-reverse '((3 2 1) (6 5 4))) ⇒ (1 2 3 4 5 6)
- Функция: seq-partition последовательность n
-
Эта функция возвращает список элементов последовательности, сгруппированных в подпоследовательности длиной n. Последняя подпоследовательность может содержать меньше элементов, чем n. n должно быть целым числом. Если n отрицательно или равно 0, возвращаемое значение равно
nil.(seq-partition '(0 1 2 3 4 5 6 7) 3) ⇒ ((0 1 2) (3 4 5) (6 7))
- Функция: seq-union последовательность1 последовательность2 &опционально функция
-
Эта функция возвращает список элементов, присутствующих либо в последовательности1, либо в последовательности2. Элементы возвращаемого списка уникальны, то есть никакие два элемента не будут сравниваться как равные. Если необязательный аргумент функция не равен
nil, он должен быть функцией двух аргументов для сравнения элементов вместо стандартногоequal.(seq-union [1 2 3] [3 5]) ⇒ (1 2 3 5)
- Функция: seq-intersection последовательность1 последовательность2 &опционально функция
-
Эта функция возвращает список элементов, присутствующих как в последовательности1, так и в последовательности2. Если необязательный аргумент функция не равен
nil, он является функцией двух аргументов для сравнения элементов вместо стандартногоequal.(seq-intersection [2 3 4 5] [1 3 5 6 7]) ⇒ (3 5)
- Функция: seq-difference последовательность1 последовательность2 &опционально функция
-
Эта функция возвращает список элементов, присутствующих в последовательности1, но не в последовательности2. Если необязательный аргумент функция не равен
nil, он является функцией двух аргументов для сравнения элементов вместо стандартногоequal.(seq-difference '(2 3 4 5) [1 3 5 6 7]) ⇒ (2 4)
- Функция: seq-group-by функция последовательность
-
Эта функция разделяет элементы последовательности на список ассоциаций, ключами которых являются результаты применения функции к каждому элементу последовательности. Ключи сравниваются с помощью
equal.(seq-group-by #'integerp '(1 2.1 3 2 3.2)) ⇒ ((t 1 3 2) (nil 2.1 3.2))
(seq-group-by #'car '((a 1) (b 2) (a 3) (c 4))) ⇒ ((b (b 2)) (a (a 1) (a 3)) (c (c 4)))
- Функция: seq-into последовательность тип
-
Эта функция преобразует последовательность последовательность в последовательность типа тип. Тип может быть одним из следующих символов:
vector,stringилиlist.(seq-into [1 2 3] 'list) ⇒ (1 2 3)
(seq-into nil 'vector) ⇒ []
(seq-into "hello" 'vector) ⇒ [104 101 108 108 111]
- Функция: seq-min последовательность
-
Эта функция возвращает наименьший элемент последовательности. Элементы последовательности должны быть числами или маркерами (см. Маркеры).
(seq-min [3 1 2]) ⇒ 1
(seq-min "Hello") ⇒ 72
- Функция: seq-max последовательность
-
Эта функция возвращает наибольший элемент последовательности. Элементы последовательности должны быть числами или маркерами.
(seq-max [1 3 2]) ⇒ 3
(seq-max "Hello") ⇒ 111
- Макрос: seq-doseq (переменная последовательность) тело…
-
Этот макрос похож на
dolist(см. dolist), за исключением того, что последовательность может быть списком, вектором или строкой. Это в первую очередь полезно для побочных эффектов.
- Макрос: seq-let последовательность-переменных последовательность-значений тело…
-
Этот макрос связывает переменные, определённые в последовательность-переменных, со значениями, являющимися соответствующими элементами последовательность-значений. Это известно как разрушающая привязка. Элементы последовательность-переменных сами могут включать последовательности, что позволяет создавать вложенные разрушающие привязки.
Последовательность последовательность-переменных также может содержать маркер
&restза которым следует имя переменной, которая будет связана со всем остальным содержимым последовательность-значений.(seq-let [first second] [1 2 3 4] (list first second)) ⇒ (1 2)
(seq-let (_ a _ b) '(1 2 3 4) (list a b)) ⇒ (2 4)
(seq-let [a [b [c]]] [1 [2 [3]]] (list a b c)) ⇒ (1 2 3)
(seq-let [a b &rest others] [1 2 3 4] others)
⇒ [3 4]
Шаблоны
pcaseпредоставляют альтернативный способ для разрушающей привязки, см. Разрушающая привязка с шаблонами pcase.
- Макрос: seq-setq последовательность-переменных последовательность-значений
-
Этот макрос работает аналогично
seq-let, за исключением того, что значения присваиваются переменным, как если бы это происходило с помощьюsetqвместо привязкиlet.(let ((a nil) (b nil)) (seq-setq (_ a _ b) '(1 2 3 4)) (list a b)) ⇒ (2 4)
- Функция: seq-random-elt последовательность
-
Эта функция возвращает элемент последовательности, взятый случайным образом.
(seq-random-elt [1 2 3 4]) ⇒ 3 (seq-random-elt [1 2 3 4]) ⇒ 2 (seq-random-elt [1 2 3 4]) ⇒ 4 (seq-random-elt [1 2 3 4]) ⇒ 2 (seq-random-elt [1 2 3 4]) ⇒ 1
Если последовательность пуста, эта функция сигнализирует об ошибке.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Sequence-Functions.html