0

次のような関数と2つの変数があります。

 (setq A '(A B))

 (setq B '(A B))

 (defun myFunc (var1 var2)
   (if (equal var1 var2)
       'TRUE
       'FALSE))

  >>> (myFunc A B)

私の問題は、Lisp に変数 NAMES を文字通り比較させたいということです。したがって、上記の関数では、「内容」が同じであっても、A != B であるため、FALSE と評価されます。問題は、変数が渡されるとすぐに評価されるように見えるため、条件に到達するまでに、それらの内容が等価であるかどうかがチェックされることです。

apply役立つと思われるものを 少し読みましたが、それがどのように使用されているか理解できないようです. http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node81.html

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

3

これは不可能です - Lisp は熱心です。

変数名を渡す必要があります(引用符で囲みます):

(myFunc 'A 'B)
==> NIL

またはマクロを使用します。

于 2013-05-05T05:15:18.390 に答える