(module (srfi 132) (list-sorted? vector-sorted? list-sort vector-sort list-stable-sort vector-stable-sort list-sort! vector-sort! list-stable-sort! vector-stable-sort! list-merge vector-merge list-merge! vector-merge! list-delete-neighbor-dups vector-delete-neighbor-dups list-delete-neighbor-dups! vector-delete-neighbor-dups! vector-find-median vector-find-median! vector-select! vector-separate! ) (import scheme (except (chicken base) vector-copy!) (chicken condition) (chicken platform) (prefix (chicken sort) core:) (chicken type) (only (srfi 133) vector-copy vector-copy! vector-fill!) (only (rename (chicken random) (pseudo-random-integer random-integer)) random-integer)) (register-feature! 'srfi-132) (register-feature! 'scheme.sort) (include "exceptions.scm") ;; Utility type predicate. Unreliable, but faster than 'list?'. (: pair-or-null? (* -> boolean)) (define (pair-or-null? x) (or (pair? x) (null? x))) ;;; Core wrapper (: list-sorted? (procedure list -> boolean)) (define (list-sorted? < lis) (assert-type 'list-sorted? (procedure? <)) (assert-type 'list-sorted? (pair-or-null? lis)) (core:sorted? lis <)) (include "sorting/delndups.scm") ; list-delete-neighbor-dups etc (include "sorting/lmsort.scm") (include "sorting/vector-util.scm") (include "sorting/vmsort.scm") ; vector-merge, vector-merge! (include "sorting/sort.scm") (include "sorting/sortp.scm") ; vector-sorted? (include "sorting/select.scm") )