Operationally, you don't have to do the wrapping: since (a) is equivalent to ^a, you can substitute the implementation of the latter when you see the former.
Though if `(a)` is observably "no longer a value" of course then that's an issue. Which may or may not be a problem :-)
I thought of that. But then you’re making the semantics complicated. Say you really did want a (a) closure. Now you can’t have one, and you have to resort to more tricky wrapping. Not worth it.
Though if `(a)` is observably "no longer a value" of course then that's an issue. Which may or may not be a problem :-)