Programowanie/Programowanie funkcyjne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Ania (dyskusja | edycje)
Ania (dyskusja | edycje)
Linia 5:
Programy funkcyjne składają się jedynie z funkcji. Funkcje są podstawowymi elementami języka funkcyjnego. Główny program jest funkcją, której podajemy argumenty, a w zamian otrzymujemy wyznaczoną wartość – wynik działania programu. Główna funkcja składa się tylko i wyłącznie z innych funkcji, które z kolei składają się z jeszcze innych funkcji. Funkcje takie dokładnie odpowiadają funkcjom w czysto matematycznym znaczeniu – przyjmują pewną liczbę parametrów i zwracają wynik. Każda operacja wykonywana podczas działania funkcji, a nie mająca związku z wartością zwracaną przez funkcję to efekt uboczny (np. operacje wejścia wyjścia, modyfikowanie zmiennych globalnych). Funkcje które nie posiadają efektów ubocznych nazywane są funkcjami czystymi (pure function).
 
===Języki czysto funkcyjne===
Głównym założeniem języków czysto funkcyjnych jest to, że wynik działania funkcji jest uzależniony od przekazanych jej argumentów i tylko od nich. Nie ma efektów ubocznych. Programy funkcyjne nie zawierają przypisań, więc wartości zmiennych raz ustalone, nigdy nie mogą zostać zmienione. Może to brzmieć dziwnie dla osób przyzwyczajonych do programowania imperatywnego (gdzie działanie większości kodu ogranicza się do modyfikacji wartości zmiennych), ale jest całkowicie naturalne. Zmienna to nazwa powiązana z wartością, w przeciwieństwie do języków imperatywnych, gdzie jest to abstrakcyjne odniesienie do komórki pamięci. Jeśli zmienne są postrzegane jako „skróty” dla wartości (dokładnie tak jak w matematyce), wtedy staje się oczywistym, że ich modyfikacje są niedozwolone. Nie oczekujemy przecież, żeby przypisanie „4=5” było poprawne w jakimkolwiek języku programowania, dlatego jest też dziwnym „x=4; x=5;”.