Oświadczenie "Schemat będący funkcjonalnym językiem programowania" jest nieprawidłowe. W Schemacie zachęca się do programowania funkcjonalnego, ale nie wymuszonego. W rzeczywistości, można użyć set!
(instrukcji przypisania!) Do modyfikowania wartości dowolnej zmiennej:
(define x 10)
(set! x (+ x 3))
x
=> 13
odniesieniu do oświadczenia pytanie let
pamiętać, że wyrażenie takie jak ten:
(let ((x 10))
(+ x 3))
=> 13
... to po prostu cukier syntaktyczny, a pod maską to realizowane tak:
((lambda (x)
(+ x 3))
10)
=> 13
zauważyć, że let
wykonuje jednorazowe single assignments na jego zmiennych, więc nie narusza żadnych czysto funkcjonalnego zasadę programowania per se, puszki być potwierdzone z let
ekspresji następujący:
Ocenę wyrażeniu nie ma efektem ubocznym, jeżeli nie zmienia się zaobserwować stan maszyny i produkuje te same wartości dla samego wejścia
Ponadto, cytując z Wikipedii:
Nieczytelne języki funkcjonalne zapewniają zarówno pojedyncze przypisanie, jak i prawdziwe przypisanie (chociaż prawdziwe przypisanie jest zwykle używane z mniejszą częstotliwością niż w imperatywnych językach programowania). Na przykład, na schemacie, zarówno dla pojedynczego, przypisania (z let
) i prawdziwej przypisania (z set!
) może być stosowany do wszystkich zmiennych i wyspecjalizowanych prymitywów przewidziane wewnątrz niszczącej aktualizacji listy, wektory, łańcuchów itp
język programowania funkcjonalnego zachęca i oferuje funkcje, ale niekoniecznie wymusza programowanie funkcjonalne. – ThePiercingPrince