Как убрать скобки из подсписков в списке? - PullRequest
0 голосов
/ 12 марта 2020
(defun ppl (list)
  (loop for x in list
    collect (cons x '(ppl))))
(ppl '(1 2 3))
=> ((1 ppl) (2 ppl) (3 ppl))

Пока я все еще внутри ppl, как убрать круглые скобки, чтобы результат стал

=> (1 ppl 2 ppl 3 ppl)

Я понимаю, что мой код в основном создает список подсписков. Можно использовать некоторую помощь для выравнивания списка. Возможно, если бы я мог каким-то образом получить список, который собирает доходы?

1 Ответ

2 голосов
/ 12 марта 2020

Используйте nconc вместо collect:

(defun ppl (list)
  (loop for x in list
    nconc (list x 'ppl)))
(ppl '(1 2 3))
==> (1 PPL 2 PPL 3 PPL)

Обратите внимание, что я заменил (cons x '(ppl)) на (list x 'ppl)), чтобы избежать возможного повторного использования литерала (ppl), который nconc может превратиться в круглые списки . Если вы настаиваете на том, что в вашем коде есть кавычки (плохая идея!), Используйте append вместо nconc.

...