From cba2321c970269e3fdc3bc34e73f835a38125b25 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Sat, 3 May 2008 00:02:55 +0000 Subject: [PATCH] Try harder to remove duplicates from unions. svn: r9614 original commit: 8e9e7002d4fd33a1723015d1b36016ad55704e6f --- collects/typed-scheme/private/union.ss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/collects/typed-scheme/private/union.ss b/collects/typed-scheme/private/union.ss index 36fa6365..02a1a271 100644 --- a/collects/typed-scheme/private/union.ss +++ b/collects/typed-scheme/private/union.ss @@ -14,11 +14,11 @@ (define empty-union (make-Union null)) -(define (flat t) +(define (flat t) (match t [(Union: es) es] [_ (list t)])) -#;(define (Values-types t) (match t [(Values: ts) ts])) + (define (remove-subtypes ts) (let loop ([ts* ts] [result '()]) (cond [(null? ts*) (reverse result)] @@ -46,7 +46,7 @@ (if (andmap Values? types) (make-Values (apply map Un (map Values-types types))) (int-err "Un: should not take the union of multiple values with some other type: ~a" types))] - [else (make-union* #;(remove-subtypes types) (foldr union2 null types))]))])) + [else (make-union* #;(remove-subtypes types) (foldr union2 null (remove-subtypes types)))]))])) #;(defintern (Un-intern args) (lambda (_ args) (apply Un args)) args)