Вот некоторый исходный код для примера из удивительной книги «Земля Лисп»:
(defun random-node ()
(1+ (random *node-num*)))
(defun edge-pair (a b)
(unless (eql a b)
(list (cons a b) (cons b a))))
(defun make-edge-list ()
(apply #'append (loop repeat *edge-num*
collect (edge-pair (random-node) (random-node)))))
Поскольку у меня нет инстинкта Lisp , я считаю полезным разбить метод на несколько строк (как императивный стиль) и затем попытаться преобразовать его в функциональный стиль.
Не могли бы вы помочь мне разбить функцию make-edge-list на несколько строк?