`join` takes arbitrary iterables