Functional programming

In functional programming, it is sufficient to consider the current scope and the name of a symbol (variable or function) to understand its meaning. This is because functional languages are typically purely functional and immutable, so the scope and name of a symbol can be determined simply by examining the source code. In contrast, procedural programming often requires knowledge of the execution path in addition to the scope and name of a symbol to understand its value. This can be challenging because the execution path is a runtime property that can be affected by many factors, leading many programmers to simply debug it rather than attempting to reconstruct it.