`(c-compare? '(OP ...) X Y) → '#t or '#f`syntaxRecursively compares atoms, pairs, lists, or vectors, using

`OP`as the predicate to compare atoms. Similar to`equal?`but with a custom predicate. Added in**version 0.2.0**.`OP`will be called with two arguments: an atom of`X`, and the corresponding atom of`Y`. In other words, the Nth atom of`X`will be compared with the Nth atom of`Y`, descending recursively into nested structures. If`X`and`Y`are themselves atoms, they are compared directly with`OP`.Yields

`'#f`if`X`and`Y`have dissimilar structures (length, nesting, type), or if`OP`yields`'#f`for any corresponding atoms of`X`and`Y`. Otherwise yields`'#t`.(ck () (c-compare? '(c-string-ci=?) '#("a" ("b")) '#("A" ("B")))) ;; ==> #t ;;; X is a vector with a list, but Y is a list with a vector. ;;; The structures are dissimilar. (ck () (c-compare? '(c-string-ci=?) '#("a" ("b")) '("a" #("b")))) ;; ==> #f ;;; Can use any predicate. Here, X and Y have same structure, ;;; and each atom of X is less than the correponding atom of Y. (ck () (c-compare? '(c-<) '(1 #(5)) '(2 #(6)))) ;; ==> #t ;;; Can compare atoms directly. (ck () (c-compare? '(c-<) '1 '2)) ;; ==> #t