Emacs Lisp: Sequence Functions

By Xah Lee. Date: . Last updated: .

Here are functions that work on Sequence type.

Convert or Join Sequence

Sequence Functions

These functions work on any Sequence Type .

Those starting with “seq-” are new in Emacs 25 (Released 2016-09) . They are from “seq.el”, and the file is loaded when emacs starts. You may want to explicitly declare (require 'seq).

Some of these provide new functionalities, some gives a unified interface to old functions.

;; demo of seq-some
(seq-some (lambda (x) (eq 5 x)) [4 5 6])
;; t

Sequence Binding

[see Emacs Lisp: Destructure Binding]

Delete Elements in Sequence

remove
(remove x sequence)
  • Remove all x in sequence.
  • The original sequence is unchanged.
  • Returns a new sequence.
  • Comparison is done with equal. [see Emacs Lisp: Test Equality]
(setq xx '(3 4 5))
(remove 4 xx) ;; (3 5)
xx ; (3 4 5)
delete
(delete x sequence)
  • Remove all x in sequence.
  • The original sequence is destroyed if it's a list.
  • Returns a new sequence.
  • Comparison is done with equal. [see Emacs Lisp: Test Equality]
(setq xx '(3 4 5))

;; always set result to the same var. because original is usually destroyed
(setq xx (delete 4 xx)) ; (3 5)

;; on vector
(setq xx [3 4 5])
(setq xx (delete 4 xx)) ; [3 5]

Misc

Reference

Lisp Data Structure

List

Vector

Sequence (List, Vector)

Hash Table