> You can’t write code like this:
(let* ((l (list 1 2 3))
(h (car l)))
(setf h 23))
I think that's the crux, does anyone have an argument for why l should be (1 2 3) instead of (23 2 3)? It breaks referential transparency that you have to substitute the value of h into setf to get it to work.