Uproszczona odpowiedź brzmi: kiedy widzisz nazwę w czysto funkcjonalnym języku, wiesz, czym jest powiązana wartość, poprzez proste sprawdzenie jej definicji. Jeśli masz zmienne zmienne, możesz tylko stwierdzić, które z kilku przypisań do niego zostało wykonane jako ostatnie, więc musisz także przeanalizować przepływ sterowania, który z kolei może być warunkowy, pozostawiając ci wiele możliwości. Aby uzyskać eksplozywną eksplozję, należy jedynie wziąć pod uwagę, że RHS przypisań same w sobie zależą od zmiennych, więc trzeba je również rekurencyjnie analizować.
Najważniejsze w powyższej analizie jest to, że nie da się tego obronić bez komentarzy wyjaśniających zamiar, niezmienniki i semantykę: mogą być trudne do interpretacji i może być trudne sprawdzenie, czy semantyka jest przestrzegana w rzeczywistym kodzie.
Ta odpowiedź jest w zasadzie rozwinięciem punktu 1 Javiera.
Myślę, że jest to również wyjaśnienie popularności nieuczciwego reżimu OO: w przypadku OO stan zmiennych jest enkapsulowany, co znacznie ułatwia analizę, lokalizując mutacje do pewnego stopnia i pozwalając na znacznie bardziej solidną ekspresję i weryfikację semantyki.
Należy zauważyć, że programowanie funkcjonalne nie jest odpowiedzią. Właściwą odpowiedzią jest system, który obsługuje zarówno programowanie indukcyjne (funkcjonalne), jak i koindukcyjne (proceduralne), dzięki czemu odpowiednie narzędzia mogą obsługiwać zarówno programowanie bezstanowe, jak i stanowe. Tyle tylko, że teoria konstruktywna (funkcjonalna) jest dobrze ugruntowana, podczas gdy teoria zarządzania państwem jest jeszcze w powijakach.