By the way, input-stream-p and output-stream-p are not symbols of GRAY, but of the COMMON-LISP package.
(defmacro make-generic (funame arguments) (let ((old (gensym (string funame))) (gargs (mapcar (lambda (arg) (if (consp arg) (first arg) arg)) arguments))) `(progn (setf (fdefinition ',old) (function ,funame)) (fmakunbound ',funame) (defgeneric ,funame ,gargs (:method ,arguments (,old ,@gargs))))))
(defpackage #:clim-mop (:use #:clos))
(eval-when (:compile-toplevel :load-toplevel :execute) (loop for sym being the symbols of :clim-mop do (export sym :clim-mop)))
(ext:without-package-lock ("COMMON-LISP") ; <---
;; CLIM expects INPUT-STREAM-P to be a generic function. (unless (typep #'input-stream-p 'generic-function) (make-generic input-stream-p ((stream stream))))
;; CLIM expects OUTPUT-STREAM-P to be a generic function. (unless (typep #'output-stream-p 'generic-function) (make-generic output-stream-p ((stream stream)))) )