4

親sexpでリストを「広げる」ことができるフォームは、どのlispにもありますか? お気に入り:

(+ (spread '(1 2 3))) -> (+ 1 2 3)
4

1 に答える 1

9

それには2つの方法があります。どちらが良いかは、最終的に何を望むかによって異なります。

,@通常、内側`(バッククォート)を使用できます。次のフォーム,@が評価されてリストが生成され、テンプレートに結合されます。

* `(+ ,@'(1 2 3))
(+ 1 2 3)

* (eval `(+ ,@'(1 2 3)))
6

または、リストにパックされた引数を使用して関数を呼び出したいだけの場合は、apply関数を使用する方が便利です。

* (apply #'+ '(1 2 3))
6
于 2012-08-18T05:06:27.480 に答える