From 29184f50cab43b62e3e51c7cddc9812e7229d26f Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Fri, 6 Nov 2009 22:34:26 +0000 Subject: [PATCH] clarify optimization choice svn: r16588 --- collects/scheme/list.ss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/collects/scheme/list.ss b/collects/scheme/list.ss index eb5b9d3848..a0087b351d 100644 --- a/collects/scheme/list.ss +++ b/collects/scheme/list.ss @@ -189,6 +189,8 @@ ;; (append l (car ls) (loop (cdr ls))))))])) (define (remove-duplicates l [=? equal?] #:key [key #f]) + ;; `no-key' is used to optimize the case for long lists, it could be done for + ;; shorter ones too, but that adds a ton of code to the result (about 2k). (define-syntax-rule (no-key x) x) (unless (list? l) (raise-type-error 'remove-duplicates "list" l)) (let ([h (cond [(< (length l) 40) #f]