The difference is that in one case you are passing a single argument to array(..), a tuple with three elements. The call that does not work is passing 3 arguments to array(..). The final version packs those 3 values into one tuple, and passes it as the only argument to array(..)