| "Given a function with a single parameter of tuple type |
| `[P1, P2, ..., Pn]`, return a function with multiple |
| parameters of type `P1`, `P2`, ..., `Pn`. |
| |
| That is, if `fun` has type `W([X,Y,Z])` then `flatten(fun)` |
| has type `W(X,Y,Z)`. |
| |
| In the case of a function whose parameter type is a |
| sequence type or unterminated tuple type, the returned |
| function is variadic: |
| |
| - if the given function accepts `[S*]`, the returned |
| function has a single variadic parameter of type `S*`, |
| - if the given function accepts `[S+]`, the returned |
| function has a single variadic parameter of type `S+`, |
| - if the given function accepts `[P1, P2, ..., Pn, S*]`, |
| the returned function has multiple parameters with types |
| `P1`, `P2`, ..., `Pn`, `S*`, or |
| - if the given function accepts `[P1, P2, ..., Pn, S+]`, |
| the returned function has multiple parameters with types |
| `P1`, `P2`, ..., `Pn`, `S+`." |
| see(`function unflatten`) |
| tagged("Functions") |
| shared native Return(*Args) flatten<Return,Args> |
| (Return tupleFunction(Args tuple)) |
| given Args satisfies Anything[]; |
| |