我的程序有问题.
我有一个比较2字符串的条件:
(if(eq?(exp1)(exp2)))
当exp1给我一个字符串,exp2给我一个字符串.当然,当我改变"eq?"时 到"=",它给我下一个问题:
=:期望类型<number>作为第二个参数,给定:ie; 其他论点是:即.
当我运行程序时,函数不会进入"if"函数中的第一个表达式,并进入第二个表达式(意味着条件为false).
我能做什么?
谢谢.
按照等价谓词 R6RS的部分,你应该使用equal?,不eq?,这不是测试它的两个参数是否完全相同的对象(而不是两个对象具有相同的值).
(eq? "a" "a") ; unspecified
(equal? "abc" "abc") ; #t
Run Code Online (Sandbox Code Playgroud)
作为评论中的文字说明,字符串部分还提到string=?,特别是字符串比较,这可能避免进行类型检查.