I added explicit language for @vector-map, but remained silent about the others.

On Mon, Aug 5, 2019 at 5:34 PM Shiro Kawai <xxxxxx@gmail.com> wrote:
vector-map in R7RS-small (and srfi-133) is required to be restart-safe
(multiple returns won't mutate earlier result).
Do we want to inherit the property for @vector-safe?  Current reference
implementation is not.  It can be checked with something like this:

(let* ((cc #f)
       (v0 #f)
       (v1 (u8vector-map (lambda (n)
                         (when (= n 1)
                           (unless (call/cc (lambda (k) (set! cc k) #t))
                             (set! cc #f)))
                         (* n 2))
                       '#u8(1 2))))
  (when cc
    (set! v0 v1)
    (u8vector-set! v0 1 0)
    (cc #f))
  (list v0 v1))

;; if restart safe, returns (#u8(2 0) #u8(2 4))
;; otherwise, (#u8(2 4) #u8(2 4))

Restart safety is a nice property, but if the user of srfi-160 expects efficiency,
it kind of defeats the expectation. 
If we don't require restart-safety, it should be mentioned somewhere because
it's divergence from R7RS/srfi-133 assumption.

Shall we require @vector-map restart-safe?

Other procedures that restart-safety may matter:
@vector-unfold, @vector-unfold-right, @vector-cumulate, 
@vector-filter, @vector-remove, @vector-filter, @vector-partition
But for these, srfi-133 counterparts doesn't mention restart safety, so
we can leave them as they are.