with a persistent reference to the concatenation, the spine (not the elements) of xs would have to be copied, because zs might need to be traversed multiple times. But what about something like
f (xs ++ ys)
for a function f that makes a single pass through its argument list (like length or sum)?