0
私は((a)(b)(f(x)))
のリストを持っています。私が得たいのは、((a)(b)(f(x1))(a)(b)(f(x2))(a)(b)(f(x3))))
のリンクリスト構造です。すなわち、ユーザの要求に基づいてリストを繰り返し追加し、変数の値は、その値がお互いからユニークになるように、チャニングしている。どのように私はLISPでそれを実装できますか?可変長のリンクリストの作成
私は((a)(b)(f(x)))
のリストを持っています。私が得たいのは、((a)(b)(f(x1))(a)(b)(f(x2))(a)(b)(f(x3))))
のリンクリスト構造です。すなわち、ユーザの要求に基づいてリストを繰り返し追加し、変数の値は、その値がお互いからユニークになるように、チャニングしている。どのように私はLISPでそれを実装できますか?可変長のリンクリストの作成
? (let ((list '((a) (b) (f (x))))
(n 3))
(flet ((copier (l n)
(setf l (copy-tree l))
(let ((sym (first (second (third l)))))
(setf (first (second (third l)))
(intern (format nil "~a~a"
(symbol-name sym)
n))))
l))
(loop for i from 1 upto n
nconc (copier list i))))
((A) (B) (F (X1)) (A) (B) (F (X2)) (A) (B) (F (X3)))
...突然、私のソリューションはかなりエレガントに見えます。 –
@larsmans:a)リストを入力として受け取ります。 b)COLLECTはしませんが、APPEND ... - 結果リストのネストを確認してください。 –
ああ、そうです。私はその質問を誤解した。 (OPの結果リストにはカッコのバランスが崩れています) –