In Emacs lisp c'è add-to-list
per aggiungere un singolo elemento a un elenco (se non esiste già).Come aggiungere più elementi a un elenco in Emacs lisp
Invece di uno, voglio aggiungere più elementi. Inoltre, non voglio filtrare gli elementi duplicati ma aggiungerli comunque alla lista.
Attualmente, ho implementato la seguente funzione:
(defun append-to-list (list-var elements)
"Append ELEMENTS to the end of LIST-VAR.
The return value is the new value of LIST-VAR."
(set list-var (append (symbol-value list-var) elements)))
La funzione fa quello che voglio, ma mi chiedevo se qualcosa di simile (o superiore) esiste già in Emacs Lisp. Non voglio reinventare la ruota.
Aggiornamento 1: Stefan sottolinea che questo codice non funziona con lo scope lessicale. C'è un modo per farlo funzionare?
Aggiornamento 2: In precedenza ho pensato che il filtro duplicato sarebbe andato bene ma non lo è. Ho bisogno dei duplicati.
Il codice va bene. Non esiste una funzione di sistema simile. – sds
Non lo descriverei come "buono", ma sì, funzionerà. Usare 'symbol-value' e' set' significa che non può essere usato con una variabile con scope lessicale. A meno che tu non ** ne abbia davvero bisogno, meglio aggiungere 'elements' all'inizio, poiché' elements' sarà quasi sempre più corto (e talvolta * molto * più breve) di 'list-var'. – Stefan
C'è un modo per far funzionare il codice con scope lessicale? –