Description
We should probably be able to have named functions that can close over their environments.
I think we definitely want named copying closures. There shouldn't be anything fundamentally difficult about this, although these are items that behave differently that other items, and thus will be a bit annoying.
Named aliasing closures are trickier, since their upvars can get deinitialized. Probably the right solution, if we want them, is to check that their upvars are initialized when the name is referenced. (Graydon's proposal suggested doing the capture when the name is referenced for both aliasing and copying closures; I think that doing it for copying closures is extremely counterintuitive since it would be behaving substantially different from assigning it to a variable manually.)
Making the items be able to take type parameters might also be a bit fiddly, as the function will need to pull type parameters from both the closure and the arguments.