ccl icon indicating copy to clipboard operation
ccl copied to clipboard

defpackage should accept package designators for :use and :shadowing-import-from

Open informatimago opened this issue 3 years ago • 0 comments

CLHS defpackage says:

defpackage defined-package-name [[option]] => package

option::= (:nicknames nickname*)* |  
          (:documentation string) |  
          (:use package-name*)* |  
          (:shadow {symbol-name}*)* |  
          (:shadowing-import-from package-name {symbol-name}*)* |  
          (:import-from package-name {symbol-name}*)* |  
          (:export {symbol-name}*)* |  
          (:intern {symbol-name}*)* |  
          (:size integer)

package-name---a package designator.

But ccl doesn't allow package as package designators! It should be allowed in :use and :shadowing-import-from clauses!

(defpackage #\A
  (:use "CL" cl :cl #:cl #.(find-package "CL") #| <-- should be allowed !! |# )
  (:export #\F "F" f :f #:f))

The value #<Package "COMMON-LISP"> is not of the expected type (or
                                                                string
                                                                symbol
                                                                character).

(defpackage #\A
  (:use "CL" cl :cl #:cl)
  (:shadowing-import-from "CL" "SIN")
  (:shadowing-import-from cl "COS")
  (:shadowing-import-from :cl "TAN")
  (:shadowing-import-from #:cl "ACOS")
  (:shadowing-import-from #.(find-package "CL") #| <-- should be allowed !! |#  "ASIN")
  (:export #\F "F" f :f #:f))

The value #<Package "COMMON-LISP"> is not of the expected type (or
                                                                string
                                                                symbol
                                                                character).

(defpackage #\A
  (:use "CL" cl :cl #:cl)
  (:shadowing-import-from "CL" "SIN")
  (:shadowing-import-from cl "COS")
  (:shadowing-import-from :cl "TAN")
  (:shadowing-import-from #:cl "ACOS")
  (:export #\F "F" f :f #:f))

--> #<Package "A">

informatimago avatar May 01 '21 16:05 informatimago