それは常にテスト結果を返します。COND句はのみ
CL-USER> (cond (t))
T
CL-USER> (cond ((> 5 10)))
NIL
はIF
文を書くためだけの方法COND
ありませんか? これはテストだけでCOND
を書き換えるときのように、このために保有していない:
CL-USER> (if (> 5 1))
error while parsing arguments to DESTRUCTURING-BIND:
too few elements in
((> 5 1))
to satisfy lambda list
(SB-IMPL::TEST SB-IMPL::THEN &OPTIONAL SB-IMPL::ELSE):
between 2 and 3 expected, but got 1
それがこの方法であれば、どのようCOND
が正確にIF
バージョンにすべての句を変換するのですか?
はCONDを使用してフォームを拡張し、生成されたコードをチェックするために 'macroexpand'を使用します... –