Am Di., 20. Sept. 2022 um 02:43 Uhr schrieb Bradley Lucier <
[email protected]>:

> On 9/14/22 2:48 AM, Marc Nieper-Wißkirchen wrote:
> > - It says that the sample implementation implements the procedures
> > without a "!" in a "call/cc-safe" way.  But that should be part of the
> > specification, i.e. that every conforming implementation must implement
> > the procedures without a "!" in a "call/cc-safe" way.
>
> I can't find it in me to require implementors to do something that I
> cannot define precisely.
>

If there are no requirements on implementations, the doubling of, say,

As I tried to illustrate with my recent vector-map example, we can probably
get away with any new language (like "call/cc-safety") outside of the
non-normative parts.

As `array-copy` is defined through `array->list`, only the latter has to be
inspected.  Its definition can be made more precise (so that is
"call/cc-safe"):

**
The `array->list` procedure invokes the ARRAY's getter once for each
multi-index in ARRAY's domain in lexicographic order, and returns a list of
the results, in order.
**

(By the way, is there a reason why you want the getters invoked in
lexicographic order?  Wouldn't an implementation where the getters are
invoked in an unspecified order be more efficient as it could be iterative?)
In fact, `array-copy` seems easy to specify correctly without any new
language but it is not clear what the specification of `array-copy!` should
be.  At the moment, it is the same as `array-copy` but this is obviously
not intended.

I will think about a way how to specify the "!" versions.

Reply via email to