Ah, I see what the problematic use case is: when you want to call a whole stack with a deeply nested dynamically-scoped callee (maybe it’s a low-level routine that relies on a “global”-ish setting, like a numeric tolerance or an iteration depth), but don’t wish to dynamically scope the rest of it.
Nonetheless the point about naming and semantics stands, it’s a wart on the language. These are probably best thought of as “dynamic constants.” Could we have a contextual keyword like dynamic
for this, as @mnemnion suggests? Something like this seems far more appealing:
dynamic const a = 1
f() = a
f() # 1
dynamic let a=2
f()
end # 2