Hi Jon,

> (let L (3 2 5 4) (sort L) L)
>
> should give the same result as
>
> (let L (3 2 5 4) (sort L))

it should not;-)

> Why couldn't L simply be given the same value?

L is given the same value which you print in the first case.  In the
second case, you printed out the return value of 'sort'.

L still points to the same cons cell, but 'sort' modified the list
underneath.  You'd have to do (setq L (sort L)) to get the sorted list
into the variable L.

: (let L (3 2 5 4) (setq L (sort L)) L)
-> (2 3 4 5)

> The docs on the 'sort' function says "Sorts lst by destructively
> exchanging its elements."

That's correct.  In your examples, L points to the first cons cell of
the list initially.  However, 'sort' rearranges the list destructively
and that cons cell (pointed by L) is no longer the first one.

Hope it helps,

Tomas
-- 
UNSUBSCRIBE: mailto:picol...@software-lab.de?subject=unsubscribe

Reply via email to