|From: Bill <[EMAIL PROTECTED]>
  |Date: Sun, 15 Jun 2008 02:00:53 -0400
  |
  |I'm using CMU CL 19d and I'm trying to use Jonathan Amsterdam's Iterate
  |macro package, v. 1.4.3.  Installation went fine, asdf and all that.  My
  |problem is that I can't find a way to use (in the package sense) it.
  |When I try use-package I get collisions with the symbols ITERATE and
  |COLLECT.  I don't care about colliding with the loop macro but I use the
  |CMU CL extension iterate.  The macro package provides iter as a synonym
  |for iterate for precisely this reason.
  |
  |Is there any way I can arrange to 1) use the symbols exported from the
  |iterate package without qualification and at the same time 2) use
  |ext:iterate.
 
CL allows you to shadow symbols when to work around problems of
collision in packages.  In this case you want to do a
CL:SHADOWING-IMPORT of the symbol from iterates' package. Then
EXT:ITERATE is available.

[I don't use condone the iterate macro, but the following example
should indicate how it works.  Look up SHADOW and SHADOWING-IMPORT in
the spec. Note DEFPACKAGE also allows you to specify how symbols can
be shadowed.]

* (describe 'iterate)

ITERATE is an external symbol in the EXTENSIONS package.
Macro-function: #<Byte function (:MACRO ITERATE) {280C0EF1}>
Macro documentation:
  Iterate Name ({(Var Initial-Value)}*) Declaration* Form*
  This is syntactic sugar for Labels.  It creates a local function Name with
  the specified Vars as its arguments and the Declarations and Forms as its
  body.  This function is then called with the Initial-Values, and the result
  of the call is return from the macro.
On Wednesday, 4/2/08 10:51:38 am MDT it was compiled from:
target:code/extensions.lisp
  Created: Sunday, 10/5/03 05:41:22 am MDT
  Comment: $Header: /project/cmucl/cvsroot/src/code/extensions.lisp,v 1.28 
2003/10/05 11:41:22 gerd Exp $

* (defpackage "FOO" (:export "ITERATE"))

#<The FOO package, 0/8 internal, 1/2 external>

* (shadowing-import '(foo:iterate))

T

* (describe 'iterate)

ITERATE is an external symbol in the FOO package.

--
Madhu

Reply via email to