While it does not appear like this patch proposal is going anywhere for some reason, there is a further opportunity for change.
One thing is to note that scm_srfi1_append_reverse_x does essentially the same thing but has a different doc string, the second argument non-optional and a different implementation that creates nonsense on some arguments and hangs on others: scheme@(guile-user)> (use-modules (srfi srfi-1)) scheme@(guile-user)> (append-reverse! (circular-list 1 2) '(3 4)) $2 = (4 3 1 2 . #-1#) scheme@(guile-user)> (append-reverse! (circular-list 1) (circular-list 2)) [hangs uninterruptibly...] It can also show somewhat inventive error messages: scheme@(guile-user)> (append-reverse! '(1 2 3 . 4) 5) ERROR: In procedure append-reverse!: ERROR: In procedure append-reverse!: Wrong type argument in position 1 (expecting list): 4 or even scheme@(guile-user)> (append-reverse! (circular-list 1 2 3) 5) ERROR: In procedure append-reverse!: ERROR: In procedure append-reverse!: Wrong type argument in position 1 (expecting list): 5 It is an obvious candidate to rerouting to reverse!. However, there is another difference apart from append-reverse! not really being all too robust against errors: scheme@(guile-user) [2]> (reverse! (circular-list 1 2 3) 5) ERROR: In procedure reverse!: ERROR: In procedure reverse!: Wrong type argument in position 1: (1 2 3 . #-2#) Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. Note that with reverse! the "(expecting list)" in the error message is absent because scm_wrong_type_arg instead of scm_wrong_type_arg_msg is employed in scm_reverse_x (directly after the patch, indirectly through SCM_VALIDATE_LIST before the patch). So if one wants to have identical error behavior, it would likely make sense to move to the somewhat more specific scm_wrong_type_arg_msg, possibly even for the whole of SCM_VALIDATE_LIST. Of course all this is water under the drawbridge if not even the original patch is going anywhere. -- David Kastrup
