Purezza
Uno dei concetti interessanti di Haskell è la purezza. Tuttavia, mi chiedo quali siano le ragioni pragmatiche alla base di questo - lasciami spiegare un po 'di più prima di rifiutare la mia domanda.
Il mio punto principale è che av...
Nell'esempio di codice c # seguente, il campo di istanza [nome] è di sola lettura e pertanto è immutabile dopo la costruzione della classe.
public sealed class Example
{
public readonly string name;
public Example(string name)
{...
Quali sono le ragioni, tecniche o meno, che le funzioni pure (funzioni che non si basano sullo stato esterno e non hanno effetti collaterali) dovrebbero non essere sempre pubbliche e statico?
Quando una funzione statica e pura è molto g...
Questa domanda è successiva alla domanda .
C'è qualche vantaggio nell'evitare l'operatore "this" quando si implementano metodi puri? Cioè, ci sono dei vantaggi nel rendere esplicite tutte le dipendenze tramite gli elenchi di argomenti, invec...
Ho letto Out of the Tar Pit di Ben Moseley e Peter Marks e nella sezione 5.2.3 discutono lo stato in lingue funzionali rispetto ai linguaggi procedurali. L'esempio procedurale è il seguente:
procedure int getNextCounter()
// 'counter' is d...
Sto leggendo di pure-funzioni nella programmazione funzionale e mi sto chiedendo, se una funzione essendo deterministica implica che la funzione è anche senza effetti collaterali? (e viceversa?)
Ho una struttura chiamata State che contiene tutte le variabili per il programma. Invece di essere modificato direttamente dalle funzioni, è il valore restituito.
Ecco alcuni codici:
#define USERNAME_LENGTH 20
#define MAX_NUMBEROFUSERS 64
#inc...
Esistono "convenzioni" / best practice sulla denominazione di funzioni pure?
Ad esempio:
aggiunta di numeri : add o sum ?
calcolo della radice quadrata : calcSqrt o sqrt ?
Inversione di un elenco : reverse o...
Ho visto questa domanda che mostra che è impossibile da programmare determinare se una funzione javascript è pura, ma a volte è possibile affermare che una funzione è pura, quindi qualcosa come ...
function sq_a(x){ return x * x; }; // no si...