diff --git a/collects/data/splay-tree.rkt b/collects/data/splay-tree.rkt index 8f4a2995e7..967bd0ce2e 100644 --- a/collects/data/splay-tree.rkt +++ b/collects/data/splay-tree.rkt @@ -444,7 +444,7 @@ Options (define-syntax-rule (mkcmp ]))) -(define (make-splay-tree ? d k) + (cond [(skip-list? d) (skip-list-iterate-least/>? d k)] + [(splay-tree? d) (splay-tree-iterate-least/>? d k)])) + +(define (it-least/>=? d k) + (cond [(skip-list? d) (skip-list-iterate-least/>=? d k)] + [(splay-tree? d) (splay-tree-iterate-least/>=? d k)])) + +(define (it-greatest/i (it-least/>? d k0)] + [l>=i (it-least/>=? d k0)] + [g (and l>i (dict-iterate-key d l>i))] + [l>= (and l>=i (dict-iterate-key d l>=i))] + [g< (and g= g<= "has, should be same")) + (unless has? + (check-equal? l> l>= "not has, should be same") + (check-equal? g< g<= "not has, should be same")) + (when l> (check > l> k0)) + (when l>= (check >= l>= k0)) + (when g< (check < g< k0)) + (when g<= (check <= g<= k0)) + (for ([k (in-dict-keys d)]) + (when (and l> (and (> k k0) (< k l>))) (error "l>")) + (when (and l>= (and (>= k k0) (< k l>=))) (error "l>=")) + (when (and g< (and (< k k0) (> k g<))) (error "g<")) + (when (and g<= (and (<= k k0) (> k g<=))) (error "g<=")))))))))