An unhygienic macro would be very helpful here:

(define-comparators <prefix> <expr>)

would expand into (with suitable hygienic injection):

(define-values (<prefix><? <prefix><=? ...) (comparison-procedures <expr>))

One could add a variant of the form

(define-comparators (<prefix> = <) <expr>)

where only the comparison procedures corresponding to = and < are defined.

Defining such a convenience macro (which can probably replace every use of `comparison-procedure` in real-world code) has also another advantage: `define-values` is not always being implemented very efficiently.  This is particularly true for the sample implementation in the R7RS (which cannot use implementation-specific optimizations).  The `define-comparators` macro doesn't have to use `define-values` internally at all.

Am Do., 14. Juli 2022 um 03:38 Uhr schrieb John Cowan <xxxxxx@ccil.org>:
Currently it takes a comparator argument and returns five comparison predicates corresponding to <? <=? =? >=? >?  This interface is annoying, because five is a lot of values to return (as the draft says), and they are returned in an unusual order (we usually talk about = < > <= >= order.

I propose that it accept a list of comparison-operator symbols as an additional argument.  For example, if this argument is (= <), then two values are returned corresponding to =? and <? in that order.  Because these symbols are quoted, they are not affected by macroexpansion.

Other than that, I think this SRFI could be finalized.