Sto cercando una libreria funzionale con strutture dati persistenti. Ho solo bisogno di array e dizionari annidati. Ci sono alcuni functional javascript libraries, ma non sono orientati verso l'immutabilità. Voglio essere in grado di scrivereLibreria funzionale Javascript con strutture dati persistenti
var dict = makeDictionary({
'foo': 1;
'bar': {
'ely': 2;
}
});
var newDict = dict.assoc('foo', 42).assoc('bar', 'tender', 30).dissoc('bar', 'ely');
assert.eq dict.bar.ely, 2; // unchanged
assert.eq newDict.bar.tender, 30; // added
assert.eq newDict.bar.ely, undefined; // removed
Mentre underscore si avvicina, in alcuni casi, in particolare con gli array, esso modifica gli argomenti del dizionario. Potrei anche usare clojurescript, ma preferirei un approccio più leggero.
@FlavioCysne Ho appena dato un'occhiata a esso e non può vedere come è legato alla mia domanda. –
solo per chiarire (perché attualmente sto lavorando a qualcosa di molto simile), hai bisogno che la risultante mappa persistente si comporti come un oggetto nativo che include "." accesso? Ciò richiederebbe simulare l'uso di getter o copiare l'intera struttura dalla modifica verso l'alto e congelarla, che per le grandi mappe piane diventa inefficiente abbastanza rapidamente (ed entrambi richiedono ES5) ... o stai bene con funzioni/metodi che accedono al contenuto (il mio approccio)? –
Sarei più felice con la soluzione di accesso ai documenti, tuttavia vedendo i suoi inconvenienti. Comunque non ho mappe enormi. Il requisito ES5 ... beh, rifletterò sul tuo approccio di accesso alle funzioni. –