I'd say it has to be undefined (the term "implementation-defined" means the implementation has to document what it does), not onlly _sub silentio_ but because the whole point of hash tables is that they are not persistent.

On Mon, Oct 7, 2019 at 2:50 AM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
A number of procedures in SRFI 125 take procedures as arguments; in particular the hash table constructors take procedure arguments (packaged as an equality predicate and a hash function in a SRFI 128 comparator).

SRFI 125 doesn't seem to say anything about what happens if these "callback" procedures return more than once or never (which can happen in the presence of Scheme's first class continuations).

What is the intention if these procedures do not return exactly once?

(a) It is an error.
(b) It is implementation-defined behavior.
(c) The behavior is well-defined.
(d) ...?

The answer to this question may not be specific to SRFI 125 but to many other SRFIs as well.

Note that exception handling (including continuable exceptions) can be implemented with first-class continuations (see guard in the R7RS), so answer (a) may not what we want.

-- Marc