Domanda

È possibile in Rascal creare cloni di un oggetto con un'identità diversa in modo che siano uguali ma non identici?

È stato utile?

Soluzione

No, Rascal ha semantica di valore.

data X = x();
bool alwaysTrue = x() == x();
.

Anche l'utilizzo di chiusure, funzioni come dati, non è possibile costruire due istanze distinguibili a e b che restituiranno ancora true su a == b.La ragione è che le chiusure non sono mai considerate uguali a meno che tu non abbia un alias che punta alla stessa istanza.

Non c'è anche alcuna operazione clonativa o qualcosa del genere.Ci sono solo espressioni e il loro risultato è isomorfo all'albero di espressione che li ha creati.

Semanticamente Rascal non garantisce che tutti i valori sullo heap siano effettivamente condivisi o che siano semplicemente indistinguibili, quindi la prospettiva di ottimizzazione della memoria viene lasciata interamente all'implementazione di runtime.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top