( make-comparator [ procedure? type-test ] [ procedure? equality ] [ #f / procedure? ordering ] [ #f / procedure? hash ] ) ⟹ comparator?
type-test ⟹ ( λ obj ) ⟹ boolean?
equality ⟹ ( λ obj1 obj2 ) ⟹ boolean?
ordering ⟹ ( λ obj1 obj2 ) ⟹ boolean?
hash ⟹ ( λ obj ) ⟹ integer?
Returns a comparator which bundles the type-test, equality, ordering, and hash procedures provided. However, if ordering or hash is #f, a procedure is provided that signals an error on application. The predicates comparator-ordered? and/or comparator-hashable?, respectively, will return #f in these cases.