I tipi di valore sono tipi che non hanno un'identità. Quando una variabile viene modificata, altre non lo sono.
Utilizzando la sintassi Javascript come esempio, ecco come funziona un tipo di valore.
var foo = { a: 42 };
var bar = foo;
bar.a = 0;
// foo.a is still 42
I tipi di riferimento sono tipi che hanno un'identità. Quando una variabile viene modificata, anche altre istanze.
Ecco come funziona un tipo di riferimento.
var foo = { a: 42 };
var bar = foo;
bar.a = 0;
// foo.a is now 0
Nota come l'esempio usa oggetti mutabili per mostrare la differenza. Se gli oggetti fossero immutabili, non potremmo farlo, quindi quel tipo di test per i tipi di valore / riferimento non funziona.
Esiste una differenza funzionale tra tipi di valore immutabili e tipi di riferimento immutabili? C'è qualche algoritmo che può dire la differenza tra un tipo di riferimento e un tipo di valore se sono immutabili? La riflessione è un imbroglio.
Mi sto chiedendo questo principalmente per curiosità.