自定义eqv?/相等?计划中的功能

Chr*_*ght 0 comparison scheme function

我将如何编写自己的eqv?还是相等?在计划?我会做一个cond并寻找符号吗?,数字?等,并返回相应的#t或#f?

Vij*_*hew 5

根据R5RS,实现eqv?(当传递两个参数时)obj1obj2要评估的最小规范#t是:

  • obj1并且obj2都是#t或两者兼而有之#f.(两个布尔文字如何评估相同的值是依赖于实现的).
  • obj1并且obj2都是符号和

(string=? (symbol->string obj1) (symbol->string obj2)) =) => #t

  • obj1并且obj2都是数字,在数值上是相等的(=),并且既可以是精确的,也可以是不精确的.
  • obj1并且obj2都是字符,并且根据char=?程序是相同的字符.
  • 这两个obj1obj2是空列表.
  • obj1并且obj2是表示商店中相同位置的对,向量或字符串(参见R5RS的3.4节).
  • obj1并且obj2是位置标记相等的过程(lambda 表达式在概念上用存储位置标记.这意味着在Scheme实现之间有所不同.另见R5RS的4.1.4节).

equal?可以通过eqv?递归地比较对,向量和字符串的内容,应用于eqv?其他对象(如数字和符号)来实现.