首页 理论教育入门至精通,EQ函数与EQUAL函数解析

入门至精通,EQ函数与EQUAL函数解析

【摘要】:前面我们介绍了等值比较函数“=”,它只能用于数、符号原子和字符串,即原子的等值比较函数,它不能用于表。eq函数用于检查两个表达式<expr1>和<expr2>是否约束于同一对象,即它们不仅值相等,而且占用同一内存单元。因此,任选变元<fuzz>可以让用户指定表达式<expr1>和<expr2>间的最大差值,在此范围内,仍然认为<expr1>和<expr2>是相等的。所有同源值一定相等不同源时,INTREALSTR类型一定相等不同源时,ENAME类型,“=”不等,“eqequal”相等。

前面我们介绍了等值比较函数“=”,它只能用于数、符号原子和字符串,即原子的等值比较函数,它不能用于表。下面将要介绍的两个等值函数可以用于任意的表达式。

1.Eq。

此函数确定两个表达式是否恒等。eq函数用于检查两个表达式<expr1>和<expr2>是否约束于同一对象(用setq函数),即它们不仅值相等,而且占用同一内存单元。若是,则返回T;否则返回nil。

例如:

2.Equal。

此函数确定两个表达式的值是否相等。equal函数确定两个表达式的求值结果是否相等。当比较两个实型数(或由实型数组成的点表)时,如果采用不同的方法来计算它们,则恒等的两个数也可以稍有差别。因此,任选变元<fuzz>可以让用户指定表达式<expr1>和<expr2>间的最大差值,在此范围内,仍然认为<expr1>和<expr2>是相等的。

例如:

3.函数“=”,“eq”和“equal”之间的比较。(www.chuimin.cn)

(1)所有同源值一定相等

(2)不同源时,INTREALSTR类型一定相等

(3)不同源时,ENAME类型,“=”不等,“eqequal”相等。(setqe1(car(entsel))e2c(ar(entsel)))这时选取相同实体

(4)不同源时,LIST类型,“=eq”不等,“equal”相等

(5)PICKSET好像不存在不同源问题

(6)对不常用类型SYMSUBREXRXSUBR等未加分析,SYM属于不同源时相等的一类