我想测试列表之间的相等性,但我实际上只关心成员是否相同,而不关心顺序。有没有简单的运算符可以检查这一点?
一个相当简单的例子
(my-equal? (a b) (b a))
Run Code Online (Sandbox Code Playgroud)
应该返回#t。
显然,这个特定的例子可以通过检查两个列表然后反转第二个列表并再次检查来轻松完成
(or (equal? (a b) (b a)) (equal? (a b) (reverse (b a)))
Run Code Online (Sandbox Code Playgroud)
但有没有通用的方法呢?我可以尝试编写一个函数,但我只能想象一些非常复杂的东西来完成这项工作。我猜这一定是一个相当普遍的需求,我想知道方案是否有一个内置的运算符可以在这里完成工作。
我正在使用 mit-scheme 9.0.1