title: Can I use append! on literal lists?
body: <p>From my understanding, it is invalid to use <code>set-car!</code> or <code>set-cdr!</code> on a literal list.</p>
  <pre class="lang-lisp prettyprint-override"><code>(define nums '(1 2 3))
  (set-car! nums 10)  ; Invalid.
  </code></pre>
  <p>With this in mind, can I use literal lists as arguments to SRFI 1's <a href="https://srfi.schemers.org/srfi-1/srfi-1.html#append!" rel="nofollow noreferrer"><code>append!</code></a> procedure? I am asking this because implementations of <code>append!</code> presumably use <code>set-cdr!</code> on all but the last argument given to <code>append!</code>. If <code>set-cdr!</code> is invalid on a literal list, then so is using <code>append!</code> on literal lists. Is my thinking correct?</p>
  <p>What about using a literal list for the last argument given to <code>append!</code>?</p>
  <p>Cases:</p>
  <ul>
  <li><code>(append! (list 1) '(2 3))</code> — Is this valid?</li>
  <li><code>(append! '(1) (list 2 3))</code> — Is this valid?</li>
  </ul>