diff --git a/code/seq.lisp b/code/seq.lisp
index 6e3574ed938540f352b20d3dfab8f8fe3cdc1d78..a8e3f36a00d7fdc92bd81946530b26e5ae9bf047 100644
--- a/code/seq.lisp
+++ b/code/seq.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/seq.lisp,v 1.49 2004/09/27 21:17:23 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/seq.lisp,v 1.50 2004/10/22 18:17:10 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -65,8 +65,8 @@
 ;;;    Given an arbitrary type specifier, return a sane sequence type specifier
 ;;; that we can directly match.
 ;;;
-(defun result-type-or-lose (type &optional nil-ok)
-  (let ((type (specifier-type type)))
+(defun result-type-or-lose (seq-type &optional nil-ok)
+  (let ((type (specifier-type seq-type)))
     (cond
       ((eq type *empty-type*)
        (if nil-ok
@@ -77,6 +77,12 @@
 		  :format-control
 		  "NIL output type invalid for this sequence function."
 		  :format-arguments ())))
+      ((or (union-type-p type) (member-type-p type))
+       (error 'simple-type-error
+	      :datum type
+	      :exptected-type 'sequence
+	      :format-control "~S is too hairy for sequence functions."
+	      :format-arguments (list seq-type)))
       ((dolist (seq-type '(list string simple-vector bit-vector))
 	 (when (csubtypep type (specifier-type seq-type))
 	   (return seq-type))))
@@ -88,7 +94,7 @@
 	      :expected-type 'sequence
 	      :format-control
 	      "~S is a bad type specifier for sequence functions."
-	      :format-arguments (list type))))))
+	      :format-arguments (list seq-type))))))
 
 (define-condition index-too-large-error (type-error)
   ()