2

私はCommonLispを初めて使用するので、これは私を少し困惑させ、Googleは私を失敗させました。

sizzle私は次のように定義された関数を持っています

(defun sizzle (f &rest r) ...blah blah...)

そして今、私はすべてのオプションの引数がnilでないかどうかをチェックする必要があるので、当然私はしました

(apply #'and r)

...そして、それはand関数ではなく、マクロであることがわかりました(私はまだそれを理解していません)。

だから、私の質問は、マクロを関数として使用する方法はありますか(上記のように)、またはすべての値が指定されたリストであるかどうかをチェックするために独自の関数を作成する必要がありますか?それとも、私が考えていなかった別のアプローチがありますか?

4

1 に答える 1

6

マクロを関数として使用することはできません(そのため、いくつかのものを関数にする方が良いです。そのため、最適化には通常のマクロではなくコンパイラマクロが使用されます)。

私はあなたの例のために私自身の関数を書く代わりに使う(every #'identity r)でしょう。(notany #'null r)AND

于 2013-02-13T11:32:52.083 に答える