But I think that’s not what it does, right? It doesn’t replace any typed objects with parameters. It replaces parameters with an object. From the perspective of the function author, this keyword does nothing. In the body of the function you still interact with the instance of the type. So the entire purpose of the keyword is to describe a capability offered to the caller. Which is that they may specify the fields of the type as parameters and it will be automatically packed into the expected argument type.
Or is this supposed to be a compiler directive and during parsing it will deconstruct the type and replace it with parameters at the def site? If that’s the case, what happens with callers who opt to pass an instance of the type rather than params? Will that also be deconstructed while parsing? And the references to the instance in the function body would also be replaced with references to the parameters? I’m fairly confident from the thread that this is not the case, but am open to be corrected on that understanding.
FWIW “pack” aligns more closely with “box” as both turn more primitive constructs into objects. “Unpack” and “unbox” go the other way. But using “unpack” to mean “turn a collection of parameters into an object” is backwards.