From 5b09ea16fb4cd00799049e55571097738f15c9a5 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 26 May 2013 15:49:15 -0500 Subject: [PATCH] minor improvement to class/c: generate a little bit less code --- collects/racket/private/class-internal.rkt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/collects/racket/private/class-internal.rkt b/collects/racket/private/class-internal.rkt index 710560bf7f..e380d41e9e 100644 --- a/collects/racket/private/class-internal.rkt +++ b/collects/racket/private/class-internal.rkt @@ -3496,13 +3496,10 @@ An example [else #f])) (syntax-local-name))]) (syntax/loc stx - (let* ([inits+contracts (sort (list (cons i i-c) ...) - (lambda (s1 s2) - (stringstring s1) (symbol->string s2))) - #:key car)]) + (let-values ([(inits init-ctcs) (sort-inits+contracts (list (cons i i-c) ...))]) (make-class/c methods method-ctcs fields field-ctcs - (map car inits+contracts) (map cdr inits+contracts) + inits init-ctcs inherits inherit-ctcs inherit-fields inherit-field-ctcs supers super-ctcs @@ -3514,6 +3511,13 @@ An example opaque? 'name))))))])) +(define (sort-inits+contracts lst) + (define sorted + (sort lst + stringstring car))) + (values (map car sorted) (map cdr sorted))) + (define (check-object-contract obj methods fields fail) (unless (object? obj) (fail "not a object"))