Function: set:remove

set:remove is a byte-compiled function defined in set.el.

Signature

(set:remove ELT SET)

Documentation

Remove element ELT from SET and return new set.

Assume SET is a valid set. Uses set:equal-op for comparison. Use (setq set (set:remove elt set)) to assure set is always properly modified.

Aliases

set:delete

Source Code

;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/set.el
(defun set:remove (elt set)
  "Remove element ELT from SET and return new set.
Assume SET is a valid set.  Uses `set:equal-op' for comparison.
Use (setq set (set:remove elt set)) to assure set is always properly modified."
  (pcase set:equal-op
    ('equal (delete elt set))
    ((or 'eq 'eql) (delq elt set))
    (_  (let ((rest (set:member elt set))
	      (rtn set))
	  (when rest
	    (cond ((= (length rtn) 1) (setq rtn nil))
		  ((= (length rest) 1)
		   (setcdr (nthcdr (- (length rtn) 2) rtn) nil))
		  (t (setcar rest (cadr rest))
		     (setcdr rest (cddr rest)))))
	  rtn))))