Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
親sexpでリストを「広げる」ことができるフォームは、どのlispにもありますか? お気に入り:
(+ (spread '(1 2 3))) -> (+ 1 2 3)
それには2つの方法があります。どちらが良いかは、最終的に何を望むかによって異なります。
,@通常、内側`(バッククォート)を使用できます。次のフォーム,@が評価されてリストが生成され、テンプレートに結合されます。
,@
`
* `(+ ,@'(1 2 3)) (+ 1 2 3) * (eval `(+ ,@'(1 2 3))) 6
または、リストにパックされた引数を使用して関数を呼び出したいだけの場合は、apply関数を使用する方が便利です。
apply
* (apply #'+ '(1 2 3)) 6