remove-n

Uma rotina pra complementar a SUB-LIST que postei outro dia:
; remove somente os (n-esimos) valor(es) da lista
(defun remove-n (n lst / new nl
  (
setq new nil
    nl  0
    n   (if (listp n) n (list n))
    n  (vl-sort n '<))
  (
repeat (length lst)
    (
if (/= nl (car n))
      (
setq new (append new (list (car lst))))
      (
setq n (cdr n)))
    (
setq lst (cdr lst)
      nl  (1+ nl)))
  new)

esta rotina remove os N-ésimos elementos de uma lista, exemplo:
(remove-n '(2 3 4) '("a" "b" "c" "d" "e" "f"))
retorna : ("a" "b" "f")

Nenhum comentário:

Postar um comentário