Artykuł czytałem daje to jako przykład zanieczyszczonego funkcji (w JavaScript):Czy czysta funkcja zależy od stałej zewnętrznej?
const tipPercentage = 0.15;
const calculateTip = cost => cost * tipPercentage;
To uderzyło mnie jak trochę dziwny przykład, ponieważ tipPercentage
jest stałą o wartości niezmienne. Typowe przykłady czystych funkcji pozwalają na zależność od niezmiennych stałych, gdy te stałe są funkcjami.
const mul = (x, y) => x * y
const calculateTip = (cost, tipPercentage) => mul(cost, tipPercentage);
W powyższym przykładzie, poprawcie mnie jeśli się mylę, calculateTip
zazwyczaj zostać zakwalifikowane jako czystej funkcji.
Moje pytanie brzmi: czy w programowaniu funkcjonalnym funkcja jest nadal uważana za czystą, jeśli opiera się na zdefiniowanej zewnętrznie stałej o niezmiennej wartości, gdy ta wartość nie jest funkcją?
Jest to - w haskell każda inna funkcja, która "przyjmuje więcej niż 2 argumenty", opiera się na przechwyconych zmiennych z "zewnętrznego zakresu". – zerkms
Tak, oczywiście. W zależności od niezmiennych funkcji jest to tylko szczególny przypadek zależny od niezmiennych wartości. – Bergi
Gdyby nie były czyste, matematyka byłaby zepsuta. – molbdnilo