@mchakravarty Wouldn't something like this be better?
```haskell
FromStream :: (Elt e, Shape sh) => acc aenv [Array sh e] -> PreOpenAcc acc aenv (Vector sh, Vector e)
```
The dimensionality of the arrays in the steam is known statically, a fact that would be lost if we just represent it as a 2D array. Also, I did experiment with using a 2D array to represent segment descriptors when I first started on the vectoriser. I found it a fairly clunky representation to work with.