Next: srfi comparators constructors list, Previous: srfi comparators constructors real, Up: srfi comparators constructors [Index]
Return a comparator that compares pairs first on their cars using car-comparator. If the cars are equal: it compares the cdrs using cdr-comparator. The hash function makes use of both the car and the cdr.
#!vicare (import (vicare) (srfi :114)) (define-constant C (make-pair-comparator exact-integer-comparator real-comparator)) ;; type test (comparator-test-type C '(1 . 2.0)) ⇒ #t (comparator-test-type C '(1 . 2.0)) ⇒ #t (comparator-test-type C '()) ⇒ #f (comparator-test-type C '(1 . 2+1i)) ⇒ #f (comparator-test-type C "ciao") ⇒ #f ;; type check (comparator-check-type C '(1 . 2.0)) ⇒ #t (try (comparator-check-type C (void)) (catch E ((&comparator-type-error) #t) (else E))) ⇒ #t ;; comparison (comparator-compare C '(1 . 2.0) '(1 . 2.0)) ⇒ 0 (comparator-compare C '(1 . 2.0) '(1 . 3)) ⇒ -1 (comparator-compare C '(1 . 3) '(1 . 2.0)) ⇒ +1 ;; hash (non-negative-exact-integer? (comparator-hash C '(1 . 2.0))) ⇒ #t
Return a comparator that compares pairs on their cars alone using comparator. The hash function makes use of the car only.
#!vicare (import (vicare) (srfi :114)) (define-constant C (make-car-comparator exact-integer-comparator)) ;; type test (comparator-test-type C '(1 . 2.0)) ⇒ #t (comparator-test-type C '(1 . 2.0)) ⇒ #t (comparator-test-type C '(1 . 2+1i)) ⇒ #t (comparator-test-type C '(2.0 . 1)) ⇒ #f (comparator-test-type C '()) ⇒ #f (comparator-test-type C "ciao") ⇒ #f ;; type check (comparator-check-type C '(1 . 2.0)) ⇒ #t (try (comparator-check-type C (void)) (catch E ((&comparator-type-error) #t) (else E))) ⇒ #t ;; comparison (comparator-compare C '(1 . 2) '(1 . 3)) ⇒ 0 (comparator-compare C '(1 . 2) '(2 . 3)) ⇒ -1 (comparator-compare C '(2 . 2) '(1 . 2)) ⇒ +1 ;; hash (non-negative-exact-integer? (comparator-hash C '(1 . 2.0))) ⇒ #t
Return a comparator that compares pairs on their cdrs alone using comparator. The hash function makes use of the cdr only.
#!vicare (import (vicare) (srfi :114)) (define-constant C (make-cdr-comparator exact-integer-comparator)) ;; type test (comparator-test-type C '(2.0 . 1)) ⇒ #t (comparator-test-type C '(2.0 . 1)) ⇒ #t (comparator-test-type C '(2+1i . 1)) ⇒ #t (comparator-test-type C '(1 . 2.0)) ⇒ #t (comparator-test-type C '()) ⇒ #f (comparator-test-type C "ciao") ⇒ #f ;; type check (comparator-check-type C '(2.0 . 1)) ⇒ #t (try (comparator-check-type C (void)) (catch E ((&comparator-type-error) #t) (else E))) ⇒ #t ;; comparison (comparator-compare C '(2 . 1) '(3 . 1)) ⇒ 0 (comparator-compare C '(2 . 1) '(3 . 2)) ⇒ -1 (comparator-compare C '(2 . 2) '(2 . 1)) ⇒ +1 ;; hash (non-negative-exact-integer? (comparator-hash C '(2.0 . 1))) ⇒ #t
Next: srfi comparators constructors list, Previous: srfi comparators constructors real, Up: srfi comparators constructors [Index]