SE-0317: Async Let

I understand that this is a concurrent binding. I’m just not sure what the difference is in practice between “async let is a concurrent binding” and “async let transfers the async effect from the call to the variable”.


Either way, this feature only makes sense to me as designed if it can be understood as the effects being transferred to the declaration. That’s a mental model I can grok, and something that I think is teachable. That suggests that the declaration should be async let for non-throwing functions and async throws let for throwing functions. (And it also suggests the existence of a throws let which executes a throwing function but delays the throwing, and requires try when used, i.e. a sugared Result with the same semantics as this.)

If that mental model is wrong, then this feature is probably misnamed, and should be named something else, like future let.

4 Likes