Stavo pensando a funzioni pure, specialmente nel contesto del C ++, che naturalmente non è un linguaggio puramente funzionale, e mi chiedevo se le funzioni di ordine superiore in C ++ possano mai essere considerate pure? Prendiamo ad esempio std::find_if
: sarebbe molto puro, tranne che prende un'altra funzione, che potrebbe non essere pura. Non sembra esserci alcun vincolo sul predicato che std::find_if
prende che impedisce di fare cose brutte e impure all'interno della funzione, come questo:
const std::vector<int> v = { 1,2,3,4,5 };
auto result = std::find_if(v.begin(), v.end(), [](int arg)
{
return arg < someGlobalVariable;
} );
Quindi forse qualcuno con più esperienza nei linguaggi di programmazione funzionale potrebbe chiarire questo per me: la nozione di "pure funzioni" ha senso quando si ha a che fare con funzioni di ordine superiore?
EDIT: avrei dovuto dire più chiaramente che non sto cercando una spiegazione della correttezza const in C ++. Volevo solo sapere se la definizione di una funzione pura ha senso quando si parla di funzioni di ordine superiore in C ++. Ho cambiato l'esempio per illustrare che const non sta risolvendo il mio problema qui!