Domanda

Ho letto la spiegazione di Wikipedia di idempotence. So che corrisponde all'uscita di una funzione è determinata da esso di ingresso. Ma ricordo che ho sentito un concetto molto simile: pura funzione. io li Google, ma non riesce a trovare la loro differenza ...

Sono equivalente?

È stato utile?

Soluzione

funzione idempotente Un può causare idempotenti effetti collaterali.

Una funzione pura non può.

Per esempio, una funzione che imposta il testo di una casella di testo è idempotente (perché più chiamate mostreranno lo stesso testo), ma non pura.
Analogamente, l'eliminazione di un record GUID (non conteggio) è idempotente, perché i soggiorni fila cancellati dopo chiamate successive. (Chiamate aggiuntive non fanno nulla)

Altri suggerimenti

A puro funzione è una funzione senza effetti collaterali, dove l'uscita è solo determinato dal l'ingresso - che è, chiamando f(x) darà lo stesso risultato non importa come molte volte si chiamano.

idempotente è uno che può essere applicato più volte senza cambiare il risultato -. Cioè, f(f(x)) è uguale f(x)

Una funzione può essere pura, idempotente, entrambe o nessuna.

mezzi di purezza funzionali che non ci sono effetti collaterali. D'altra parte, i mezzi idempotence che una funzione è invariante rispetto alla più chiamate.

Ogni funzione pura è effetto collaterale idempotente perché funzioni pure non producono effetti collaterali, anche se essi sono chiamati più di una volta. Tuttavia, mezzi valore restituito idempotence che f (f (x)) = f (x) che non è effettuata con purezza.

No, una funzione di idempotente cambia programma statale / oggetto / macchina - e farà che il cambiamento solo una volta (nonostante i ripetuti inviti). Una funzione pura non cambia nulla, e continua a fornire una (ritorno) provocare ogni volta che viene chiamato.

Una grande fonte di confusione è che in informatica, sembra che ci sia definizioni diverse per idempotence nella programmazione imperativa e funzionale.

Da wikipedia ( https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning)

In informatica, il termine idempotente è usato più completo per descrivere un'operazione che produrrà gli stessi risultati se eseguito una o più volte. Questo può avere un significato diverso a seconda del contesto in cui viene applicato. Nel caso di metodi o subroutine chiamate con effetti collaterali, ad esempio, significa che lo stato modificato rimane invariata dopo la prima chiamata. Nella programmazione funzionale, però, una funzione idempotente è uno che ha la struttura f (f (x)) = f (x) per ogni valore x.

Dal momento che una pura funzione non produce effetti collaterali, io sono del parere che idempotence non ha nulla a che fare con la purezza.

funzione Pure = idempotent + Nessun cambiamento nelle variabili di input.

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