Q:プロパティリスト全体で関数をマップする慣用的な方法は何ですか?
さまざまなマッピング関数(mapcar
およびファミリ)は、リストなどのシーケンスに関数をマッピングします。プロパティリストを扱うとき、つまりリストに含まれる各プロパティ(最初の要素から始まる他のすべての要素)をマップしようとするとき、これらの関数をどのように使用しますか?マッピング関数は、個々の要素としてではなく、要素のペアでリストにアクセスする必要があるように思えます。
おもちゃの例として、プロパティリストを取得してすべてのプロパティ値を収集する方法を教えてください。代わりに関連付けリストである場合、それは非常に簡単です。
(mapcar #'cadr '((:prop1 a) (:prop2 b) (:prop3 c))) ;=> (a b c)
ループを使用してこれを実行できると確信していますが、少し面倒で、もっと慣用的な方法があるのではないかと思っています。
mapcar
リストの例に何をするか)、またはプロパティシンボルとプロパティ値のペアにマップするかどうかを明確にしてください。後者の方がより一般的です(より一般的には有用です)。