2014-12-27 18 views

risposta

6

Association lists sono i contenitori associativi più comunemente utilizzati in elisp. È solo un elenco di celle con valori-chiave come questo ((key . value)). È possibile utilizzare la funzione assoc per ottenere un valore corrispondente a una chiave e rassoc per ottenere una chiave con il valore richiesto.

Elisp viene fornito con la funzione incorporata mapcar che esegue la mappatura, ma AFAIK non è valido fold. Potresti emularlo usando uno dei servizi di loop forniti. Tuttavia, la soluzione migliore è utilizzare cl-lib e scivolare nella terra CommonLisp. In particolare, it suppliescl-mapcar e cl-reduce.

+0

pradhan, per ottenere il valore da una mappa, si può usare assq (o) assoc? –

+0

Di solito, 'assoc' è ciò che ha senso perché confronta le chiavi con' uguale'. D'altra parte, 'assq' si confronta con' eq' che richiede che siano esattamente lo stesso oggetto in memoria. – Pradhan

7

Oltre liste associative, (il cui algoritmica complessità è OK per piccoli tavoli, ma non per quelle di grandi dimensioni), ci sono tabelle hash, è possibile costruire con make-hash-table e puthash, o se preferite valori immediati, è possibile scriverli come #s(hash-table data a 1 b 2) .