Scrivi/leggi un tavolo da hash LISP (SBCL) comune o alternativa
-
28-10-2019 - |
Domanda
Vorrei scrivere/leggere un tavolo da hash da/dal disco, ma non è un (print)
oggetto capace. Non conoscerò i nomi chiave, quindi non riesco a pensare a un modo per farlo manualmente. Ho letto che potrebbero esserci modi specifici per la distribuzione per farlo; C'è qualcosa per questo in SBCL?
Non ho trovato nulla nel manuale SBCL o su Google.
In caso contrario, esiste un altro modo memorizzabile per mantenere elenchi di numeri interi legati alle stringhe, essere in grado di modificare tali elenchi in modo efficiente e avere un tempo di accesso costante o almeno più veloce del pari?
Gli alberi di ricerca binari sono abbastanza facili da implementare con gli alisti ed è una buona idea per creare un database di base?
Soluzione
MAPHASH
Mappe una funzione con due argomenti su una tabella hash per effetti collaterali. I due argomenti sono la chiave e il valore di ciascun elemento nella tabella hash. Puoi usarlo per esempio scrivere ogni elemento nella tabella hash come elenco della chiave e del valore:
(maphash (lambda (key value)(write (list key value))) *hash-table*)