Common Lisp - wyrównanie listy, która może zawierać symbole
To jest # 7 z99 problemów Lisp: przekształć listę, prawdopodobnie przechowując listy jako elementy na liście „płaskiej”, zastępując każdą listę jej elementami (rekurencyjnie). Próbowałem kilku rozwiązań, np. Z #2680864 lubstąd. Wszystkie działają, ale napotykam problem, jeśli spłaszczam listę zawierającą cytowany element. Na przykład.:
> '(a 'b c)
(A 'B C)
> '(a (quote b) c)
(A 'B C)
> (flatten '(a 'b c))
(A QUOTE B C)
W tym drugim przypadku chciałbym uzyskać:
(A 'B C)
Wygląda na to, że wewnętrzna reprezentacja „przeszkadza w tym zadaniu! SBCL, CLISP, ECL, ... wszyscy zachowują się w ten sam sposób.