Il seguente metodo è Pure? Direi che, dato che non cambia in ogni caso la classe corrente, quindi, tutto ciò che ora possiamo "vedere" in classe, prima di eseguire questo metodo sarà esattamente lo stesso dopo. Ho ragione?Domanda sui metodi [Pure]
class Set {
...
public ISet<T> UnionWith(ISet<T> set) {
ISet<T> unionSet = ...
foreach (Element element in this) {
unionSet.Add(element);
}
foreach (Element element in set) {
unionSet.Add(element);
}
return unionSet;
}
}
Forse stai cercando il termine * idempotente *? –
Hmmm ... non proprio. –
Nota che (concettualmente) è importante considerare il tuo livello di astrazione quando pensi se una funzione è pura. In effetti è puro oggetto-saggio, perché non cambia lo stato di qualsiasi oggetto presente (eccetto quello nuovo), ma non è puramente di sistema - alloca la memoria, quindi cambia lo stato del sistema. – Kos