If all the elements in the source vector satisfies the predicate,
can @vector-take-while return the source vector itself, or should it
make a fresh copy anyway?   it's not clear from the srfi text.

To be safe, it should, so that the caller can rely on that the returned
vector is never shared.  If that's the intention, we may amend the spec
as clarification.  Just change "Returns a @vector ..." to "Returns a new @vector ..."
or "Returns a fresh @vector ..." should suffice.

The same applies to:

- @vector-take, @vector-take-right, @vector-drop, @vector-drop-right 
  (when N is the same as the length of the source vector)
- @vector-take-while, @vector-take-while-right, @vector-drop-while,
  @vector-drop-while-right
- @vector-filter, @vector-remove (when no elements are removed)
- @vector-segment (when n is equal to or greater than the length of source vector)