srfi-162

Description

srfi-162 is a set of procedures and comparators supplementing srfi-128. This extension provides srfi-162 modified for Chicken 6. Since srfi-162 contains the complete implementation of srfi-128, srfi-162 effectively replaces srfi-128.

Author

Repository

Requirements

None.

srfi-162 API

srfi-162 provides these procedures and pre-built comparators:

[procedure] comparator-max comparator obj1 obj2 ...
[procedure] comparator-min comparator obj1 obj2 ...
[procedure] comparator-max-in-list comparator list
[procedure] comparator-min-in-list comparator list
[record] default-comparator
[record] boolean-comparator
[record] real-comparator
[record] char-comparator
[record] char-ci-comparator
[record] string-comparator
[record] string-ci-comparator
[record] pair-comparator
[record] list-comparator
[record] vector-comparator
[record] eq/eqv/equal-comparator

srfi-128 API

[procedure] comparator? obj
[procedure] comparator-ordered? comparator
[procedure] comparator-hashable? comparator
[procedure] make-comparator type-test equality ordering hash
[procedure] make-pair-comparator car-comparator cdr-comparator
[procedure] make-list-comparator element-comparator type-test empty? head tail
[procedure] make-vector-comparator element-comparator type-test length ref
[procedure] make-default-comparator
[procedure] default-hash obj

Accessors

[procedure] comparator-type-test-predicate comparator
[procedure] comparator-equality-predicate comparator
[procedure] comparator-ordering-predicate comparator
[procedure] comparator-hash-function comparator
[procedure] comparator-test-type comparator obj
[procedure] comparator-check-type comparator obj
[procedure] comparator-hash comparator obj

Comparison predicates

[procedure] =? comparator object1 object2 object3 ...
[procedure] <? comparator object1 object2 object3 ...
[procedure] >? comparator object1 object2 object3 ...
[procedure] <=? comparator object1 object2 object3 ...
[procedure] >=? comparator object1 object2 object3 ...
[syntax] comparator-if<=> [ <comparator> ] <object1> <object2> <less-than> <equal-to> <greater-than>

Documentation

For more information please confer the srfi documents:

Examples

 (import srfi-162)
 
 (=? list-comparator '(a b c) '(a b c)) ;; -> #t
 (=? list-comparator '(a b c) '(a b c d)) ;; -> #f
 (=? list-comparator '(11 22 33) '(11 22 33)) ;; -> #t
 (=? list-comparator '(11 22 33) '(11 22 333)) ;; -> #f
 (=? list-comparator '(11 22 33) '(11 22 zz)) ;; -> #f
 
 (=? list-comparator '("abc" "cde") '("abc" "cde")) ;;-> #t
 (=? list-comparator '("abc" "cde") '("abc" "cdE")) ;;-> #f
 (>? list-comparator '("abc" "cde") '("abc" "cdE")) ;;-> #t
 
 ;; make comparator for case-insensitive comparisons of string lists
 (define list-ci-comparator (make-list-comparator string-ci-comparator 
                                                  list? null? car cdr))
                                                  
 (=? list-ci-comparator '("abc" "cde") '("abc" "cde")) ;; -> #t
 (=? list-ci-comparator '("abc" "cde") '("abC" "cdE")) ;; -> #t
 (<? list-ci-comparator '("abc" "cde") '("abC" "cdE")) ;; -> #f
 (>? list-ci-comparator '("abc" "cde") '("abC" "cdE")) ;; -> #f
 (=? list-ci-comparator '("abc" "cde") '("abC" "cdEf")) ;; -> #f

Version

License