在尝试遍历这样的列表'((a + b) + (c + d))
时,我将登陆标识符+
,而不知道如何验证它是加号而不是其他一些函数/
或*
。
我如何验证我遇到的加号实际上是加号?
答案 0 :(得分:2)
首先关闭。 +
中的(a + b)
是符号,而不是函数。如果您评估+
这是一个变量,那么这将是显而易见的,您将看到变量背后的值。如果您评估评估为符号的'+
,则会打印出符号。
所以你真正的问题是如何检查一个符号是否与另一个符号相同。 Scheme中的符号是unqiue,因此如果两个符号看起来相同,则它们是相同的符号。您可以使用eq?
来检查:
(define plus '+)
(eq? plus '+) ; ==> #t
(eq? plus '-) ; ==> #f