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.
