[plt-scheme] append!?
These are comments about the specification of Scheme itself, I suppose?
Matthias was, I believe, speaking of PLT Scheme, which is definitely
always going to mutate (non-empty) lists that appear as the first
argument to append!.
Robby
On 10/20/07, hufflen at lifc.univ-fcomte.fr <hufflen at lifc.univ-fcomte.fr> wrote:
> >
> > (append! L1 L2) mutates the first cdr field in L1 that contains NULL
> > so that it points to L2.
> > It then returns L1. If L1 is NULL, it returns L2.
> >
> > You may wish to think of the overall effect of appending L2 at the
> > end of L1, but note that
> > append! is an imperative procedure and affects all pointers to L1
>
> Personally, I think that the best approach of (append! L1 L2) is:
> -it results in the concatenation of L1 and L2,
> -L1 and/or L2 may be physically changed, but "may" should read as "may
> or may not". In fact:
> (define (append! L1 L2)
> (append L1 L2))
> is a correct implementation: append! is allowed to be destructive but does
> not have to. So, catching the result of (append! x y) in x is:(set! x
> (append! x y))
>
> J.-M.
>
>
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>