"Applies an arbitrary [[Callable]] to the given 
 [[arguments|args]]. The arguments must be packaged into a 
 [[Tuple]] whose type is compatible with the `Callable` type. 
 
 For example, given the following argument tuple:
 
      [Boolean(Character), Boolean, Boolean] tuple
          = [Character.whitespace, true, false];
 
 We can apply [[String.split]] to the arguments given in
 `tuple` as follows:
 
     String string = ... ;
     {String*} strings = apply(string.split, tuple);
 
 Application may be abbreviated using the spread operator:
 
     String string = ... ;
     {String*} strings = string.split(*tuple)
 
 In practice, this behaves as if the `Callable` were called 
 with the elements of the tuple as its arguments. The
 examples above are both equivalent to:
 
     string.split(Character.whitespace, true, false)"
see (`function unflatten`)
tagged("Functions")
shared Return apply<Return,Args>
            (Callable<Return,Args> f, Args args)
        given Args satisfies Anything[]
        => f(*args);