Scusa la mia ignoranza, vengo dalla famiglia di lingue C ma a zero esposizione a linguaggi funzionali. Ho letto che le funzioni pure generano solo output basati su un dato input. Lo stesso input fornisce la stessa uscita indipendentemente dalle altre condizioni. Ma qualcosa mi infastidisce.
Un caso semplice sarebbe array.filter
che contiene un array e una funzione per determinare cosa viene incluso e cosa no.
const newArray = oldArray.filter(item => condition);
// or put verbosely
import somethingFromTheOutside from './a-module';
const newArray = oldArray.filter(filterFunction);
function filterFunction(item, index, arr){
return item.value = somethingFromTheOutside;
}
Il callback riceve solo l'elemento dell'array corrente, l'indice dell'oggetto e l'array stesso. Ora se il callback dovesse rimanere puro, condition
non dovrebbe estendersi allo scope esterno e operare solo sui 3 pezzi di informazione che gli sono stati dati. Ma come sarebbe possibile array.filter
se la richiamata non è autorizzata a raggiungere i dati al di fuori della funzione?
Quali modelli ci sono in modo che quanto sopra possa essere ottenuto utilizzando le funzioni pure? Inoltre, se le funzioni pure non sono in grado di raggiungere l'ambito circostante, ciò non rende l'intero meccanismo di risoluzione inutile se ci occupiamo di pure funzioni? Sto capendo questo giusto?