Sono idempotenti funzioni lo stesso di funzioni pure?
-
22-10-2019 - |
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?
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.