Runtime & concurrency
Reveal answer and reasoning
A captured expression can represent access to captured storage rather than embedding a literal copy of the current scalar. The closure object and its member remain reachable through the tree, so later execution reads the updated value. In the lesson, MemberAccess on the multiplication's left side reflects that dependency. A parameterized expression instead receives its chosen input explicitly on each invocation.
A common wrong answer assumes every tree is a frozen value snapshot because the node graph is not edited. Immutable structure can still refer to mutable state. Even a ConstantExpression containing a mutable object is not a recursive clone of that object. Local interpretation also does not establish when a remote provider extracts captured parameters. Treat tree structure, value ownership, evaluation timing, and provider translation as distinct contracts, and use explicit inputs when they make reusable computation dependencies clearer.
What a strong answer covers
- Captured storage can be read during later execution.
- Immutable structure does not deep-freeze referenced state.
- Parameterized input and provider evaluation need separate contracts.
Common pitfall
Treating a captured member node as a frozen literal value.
Follow-up questions
- How would a scalar ConstantExpression differ?
- What lifetime risks arise when caching a captured tree?
Self-review
Choose what to revisit. These marks are your own assessment and are separate from lesson completion.