Một câu trả lời đơn giản là: khi bạn nhìn thấy một tên trong một ngôn ngữ chức năng thuần túy, bạn biết giá trị liên quan là gì bằng cách tra cứu định nghĩa đơn giản của nó. Nếu bạn có các biến có thể thay đổi, bạn chỉ có thể biết được trong số các phép gán nào được thực hiện sau cùng, do đó bạn cũng phải phân tích luồng điều khiển, do đó có thể có điều kiện, khiến bạn có nhiều khả năng. Để có được một vụ nổ theo cấp số nhân, bạn chỉ cần xem xét rằng RHS của các bài tập tự phụ thuộc vào các biến, vì vậy bạn cũng phải phân tích đệ quy chúng.
Điểm mấu chốt trong phân tích ở trên là không thể thực hiện được nếu không có ý kiến giải thích ý định, bất biến và ngữ nghĩa: những điều này có thể khó diễn giải và có thể khó xác minh ngữ nghĩa được tuân thủ trong mã thực tế.
Câu trả lời này về cơ bản là sự mở rộng điểm 1 của @ Javier.
Tôi nghĩ đó cũng là một lời giải thích về sự phổ biến của chế độ OO lừa đảo: với OO, trạng thái đột biến được gói gọn giúp phân tích dễ dàng hơn nhiều bằng cách khoanh vùng các đột biến ở một mức độ nào đó, và cho phép biểu hiện và xác minh ngữ nghĩa mạnh mẽ hơn nhiều.
Có lưu ý rằng, lập trình chức năng không phải là câu trả lời. Câu trả lời đúng là một hệ thống hỗ trợ cả lập trình quy nạp (chức năng) và lập trình (thủ tục), vì vậy các công cụ phù hợp có thể xử lý cả lập trình trạng thái và trạng thái. Chỉ là lý thuyết mang tính xây dựng (chức năng) được thiết lập tốt trong khi lý thuyết quản lý nhà nước vẫn còn ở giai đoạn sơ khai.