Next: srfi comparators constructors select, Previous: srfi comparators constructors vector, Up: srfi comparators constructors [Index]
Build and return a comparator object behaving like
bytevector-comparator but using element-comparator rather
than default-comparator.
#!vicare
(import (vicare) (srfi :114))
(define-constant E
(make-comparator (lambda (element)
(or (= 1 element)
(zero? element)))
fx=?
(lambda (a b)
(cond ((fx=? a b) 0)
((fx<? a b) -1)
(else +1)))
fixnum-hash))
(define-constant C
(make-bytevector-comparator E))
;; type test
(comparator-test-type C '#vu8()) ⇒ #t
(comparator-test-type C '#vu8(1 0)) ⇒ #t
(comparator-test-type C '#vu8(1 2)) ⇒ #f
(comparator-test-type C "ciao") ⇒ #f
;; type check
(comparator-check-type C '#vu8(1 0)) ⇒ #t
(try
(comparator-check-type C (void))
(catch E
((&comparator-type-error)
#t)
(else E)))
⇒ #t
;; comparison
(comparator-compare C '#vu8(1 0) '#vu8(1 0)) ⇒ 0
(comparator-compare C '#vu8(1 0) '#vu8(1 1)) ⇒ -1
(comparator-compare C '#vu8(1 1) '#vu8(1 0)) ⇒ +1
(comparator-compare C '#vu8() '#vu8()) ⇒ 0
(comparator-compare C '#vu8() '#vu8(1 0)) ⇒ -1
(comparator-compare C '#vu8(1 0) '#vu8()) ⇒ +1
;; hash
(non-negative-exact-integer?
(comparator-hash C '#vu8())) ⇒ #t
(non-negative-exact-integer?
(comparator-hash C '#vu8(1 0))) ⇒ #t