<div dir="ltr"><div class="gmail_extra">On Thu, Oct 3, 2013 at 9:44 AM, Elias Mårtenson <span dir="ltr"><<a href="mailto:lokedhs@gmail.com" target="_blank">lokedhs@gmail.com</a>></span> wrote:<br><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 3 October 2013 15:40, Willem Broekema <<a href="mailto:metawilm@gmail.com">metawilm@gmail.com</a>> wrote:<br>

<br>
> I guess you are modifying the value of *var*, which is not allowed if it is<br>
> a quoted list. That's why you need e.g. (list .. ..) or (copy-tree '(.. ..))<br>
> instead of '(.. ..).<br>
> <a href="http://stackoverflow.com/questions/10365470/modifying-a-list-passed-as-a-parameter-gives-different-results-in-sbcl-and-clisp" target="_blank">http://stackoverflow.com/questions/10365470/modifying-a-list-passed-as-a-parameter-gives-different-results-in-sbcl-and-clisp</a><br>

<br>
</div>(SETQ *var* ...) does not change the list. It merely reassigns the variable.<br>
</blockquote></div><br></div><div class="gmail_extra">The value that is assigned, that is the problem. That is probably a modified literal list.</div><div class="gmail_extra"><br></div><div class="gmail_extra">If there is literally this in the code: (setq *var* '(. . .))</div>
<div class="gmail_extra">then the compiler is free to extract that '(. . .) part and reuse it all the time this setq form is executed. It can create one literal object and keep it in memory, and always uses it as value. It does not need to build a new list every time.</div>
<div class="gmail_extra">If you modify that special object, e.g. by setting the car of it, then compiler may ignore that and upon the next setq set the value with modified car.</div><div class="gmail_extra"><br></div><div class="gmail_extra">
- Willem</div></div>