如何检查Racket中两个函数是否相等?

时间:2018-04-08 17:38:58

标签: scheme racket

在尝试遍历这样的列表'((a + b) + (c + d))时,我将登陆标识符+,而不知道如何验证它是加号而不是其他一些函数/*

我如何验证我遇到的加号实际上是加号?

1 个答案:

答案 0 :(得分:2)

首先关闭。 +中的(a + b)是符号,而不是函数。如果您评估+这是一个变量,那么这将是显而易见的,您将看到变量背后的值。如果您评估评估为符号的'+,则会打印出符号。

所以你真正的问题是如何检查一个符号是否与另一个符号相同。 Scheme中的符号是unqiue,因此如果两个符号看起来相同,则它们是相同的符号。您可以使用eq?来检查:

(define plus '+)
(eq? plus '+) ; ==> #t
(eq? plus '-) ; ==> #f