Stavo leggendo il documento Out of the Tar Pit scritto da Ben Moseley e Peter Marks quando mi sono imbattuto la seguente sezione a pagina 25 relativa ai dati derivati mutabili essenziali:
Essential Derived Data — Mutable
As with immutable essential derived data, this can be excluded (and the data re-derived on demand) and hence corresponds to accidental state.
Mutability of derived data makes sense only where the function (logic) used to derive the data has an inverse (otherwise — given its mutability — the data cannot be considered derived on an ongoing basis, and it is effectively input). An inverse often exists where the derived data represents simple restructurings of the input data. In this situation modifications to the data can simply be treated identically to the corresponding modifications to the existing essential state.
Non capisco perché i dati derivati mutabili essenziali debbano avere una funzione inversa. Ad esempio, considera il seguente codice JavaScript:
inputbox.onchange = function () {
outputbox.value = md5(inputbox.value);
};
Qui inputbox.value
è input nel sistema e outputbox.value
è il dato derivato mutabile essenziale. È derivato da inputbox.value
usando la funzione md5
. Tuttavia la funzione md5
non ha un inverso. Tuttavia inputbox.value
è ancora essenziale, mutabile e derivato.
Quindi cosa significano realmente gli autori quando affermano che "la mutabilità dei dati derivati ha senso solo dove la funzione (logica) usata per derivare i dati ha un inverso (altrimenti - data la sua mutabilità - i dati non possono essere considerati derivato su base continuativa, ed è efficace input ) "?
Hai qualche esempio per chiarire il loro punto?