On Thu, Oct 29, 2015 at 6:25 AM, Arthur A. Gleckler <xxxxxx@speechcode.com> wrote:
Wow, how did we manage to miss that in R7RS-small?

I don't recall, and it wasn't discussed explicitly, but I'm not sure we missed it.
The original proposal was: http://trac.sacrideo.us/wg/wiki/CompleteSequenceCowan
which makes it clear the goal is internal consistency, i.e. map and vector-map
should be interchangeable if you swap out the underlying data types.

In general "map" is a concept applied to values, and is most readable that
way.  I prefer (vector-map f vec) to (vector-map (lambda (x i) (f x)) vec).

Passing the index is more fundamental, but I expect to be used relatively
rarely.  We can provide such a procedure, but it really begs for a different
name, and I'd be inclined to merge it with -fold.  I also agree with Taylor
that as the complexity increases (you're referring to indexes and/or writing
large nested lambdas) you're better off with loop syntax.  Simple -map or
-fold with existing procedures are nicer than loops though.  Some of the
utilities, like vector-binary-search, are also important and not handled by
loop syntax.

I'm fine with the conflict, unless you want this to be an "official" R7RS-large
library, e.g. as (scheme vector), in which case I prefer #5: fork SRFI 43
removing all uses of the index, and rename the existing SRFI 43
vector-fold to something like vector-tabulate.  Otherwise #4, fork maximally,
renaming in favor of consistency with SRFI 1 and R7RS.