[Openmcl-devel] Docs on defpackage, in-package, use-package, provides and require

Hamilton Link hamlink at comcast.net
Mon Aug 16 20:24:11 PDT 2004



On Aug 16, 2004, at 1:35 AM, Andrew P. Lentvorski, Jr. wrote:

> Could someone point me to some OpenMCL documentation on how and when 
> to use the various package and module stuff?  I read Erann Gat's "The 
> Complete Idiots Guide to Common Lisp Packages", but I still don't 
> understand how it all goes together.
>

Aside from the common lisp hyperspec or cltl2, I can't point you to 
docs, but I can help you set up your package definitions if that's your 
problem.

> Specifically, I am trying to get "clos-unit" to work as a package, but 
> I seem to be missing something.  I would like to do something like:
>
> (load "clos-unit")
> (use-package :clos-unit)
>
> or just:
>
> (require :clos-unit)
>
> and have it all work.
>

If you want (use-package :clos-unit) to work after (load "clos-unit"), 
clos-unit.lisp should have (in addition to the code that's already 
there) some preamble along the lines of:

(in-package :cl-user)
(unless (find-package "CLOS-UNIT")
   (defpackage "CLOS-UNIT"
     (:nicknames :unit)
     (:export "API-FN1"
              "API-CLASS-FOO"
              "ETC.")) ; ... plus maybe some more API, and a package-use 
list or import lists depending on the functionality that clos-unit 
depends upon
   )

(in-package :clos-unit)
;; all your code for clos-unit goes here

Then when you load the file, it will ensure that the package exists, 
define everything, and export the API you want clos-unit to provide 
when use-package is called from somewhere. Really that somewhere will 
often be in the context of some other package defining some other 
library API, in which case the defpackage for that other API will be 
where the package use is declared, or where particular bits of the 
clos-unit API is imported.

For require to work you have to have the clos-unit.lisp file in a 
directory that the require function looks, but it is only equivalent to 
load, and will not use-package anything into anywhere afaik.

Is that the kind of help you had in mind?

h

> Thanks,
> -a
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>




More information about the Openmcl-devel mailing list