Common Lisp: allanar una lista que puede contener símbolos

Este es el # 7 de99 problemas de Lisp: transformar una lista, posiblemente manteniendo listas como elementos en una lista 'plana' reemplazando cada lista con sus elementos (recursivamente). He intentado varias soluciones, por ejemplo de #2680864 ode aquí. Todos funcionan, pero me encuentro con un problema si estoy aplanando una lista que contiene un elemento entre comillas. P.ej.:

> '(a 'b c)
(A 'B C)

> '(a (quote b) c)
(A 'B C)

> (flatten '(a 'b c))
(A QUOTE B C)

En este último caso me gustaría obtener:

(A 'B C)

¡Parece que la representación interna de 'se interpone en el camino para esta tarea! SBCL, CLISP, ECL, ... todos se comportan de la misma manera.

Respuestas a la pregunta(1)

Su respuesta a la pregunta