Re: Woohoo! My macros are now (semi) hygienic
- From: Kaz Kylheku <kkylheku@xxxxxxxxx>
- Date: Mon, 25 Feb 2008 18:06:19 -0800 (PST)
On Feb 25, 4:05 pm, Maciej Katafiasz <mathr...@xxxxxxxxx> wrote:
Den Mon, 25 Feb 2008 15:17:43 -0800 skrev Kaz Kylheku:
Suppose foo has a member x that you access in the DO block, and bar
doesn't have any member called x. So in that lexical scope, the name x
refers to foo.x. Suppose that someone now edits the type definition of
bar_record such that it acquires a member called x. Now when you
recompile the WITH statement above, the expression x suddenly refers to
bar.x! If bar.x is suitably typed, there will be no compiler error.
Unintentional shadowing of a local variable can also take place: bad
hygiene.
And that is different from (use-package :foo) how?
It's different in that USE-PACKAGE is required to detect conflicts,
which you have to explicitly deal with using SHADOW (resolve in favor
of local package) or UNINTERN (resolve in favor of library being
used).
But USE-PACKAGE (and the :USE interface of DEFPACKAGE) are
nevertheless blunt instruments.
What Ron is saying is that maintaining export lists by hand is some
kind of bug in packages that lexicons will fix for you. That's the
only the case if you are using both systems in a certain way.
If you care about precisely what is accessible where, you have to
maintain lists, no matter what namespace system you are using.
In the case of packages, you'd be maintaining import lists rather than
export lists. I.e. lists of symbols which are arguments to :IMPORT-
FROM or :SHADOWING-IMPORT-FROM in a DEFPACKAGE. (Since you can import
symbols which are not exported, exporting is somewhat immaterial,
except to the extent that it documents what is intended to be public
and affects whether you can use a single colon in qualified names).
.
- Follow-Ups:
- Re: Woohoo! My macros are now (semi) hygienic
- From: Rob Warnock
- Re: Woohoo! My macros are now (semi) hygienic
- From: Ron Garret
- Re: Woohoo! My macros are now (semi) hygienic
- References:
- Woohoo! My macros are now (semi) hygienic
- From: Ron Garret
- Re: Woohoo! My macros are now (semi) hygienic
- From: Kaz Kylheku
- Re: Woohoo! My macros are now (semi) hygienic
- From: Kent M Pitman
- Re: Woohoo! My macros are now (semi) hygienic
- From: Ron Garret
- Re: Woohoo! My macros are now (semi) hygienic
- From: Kent M Pitman
- Re: Woohoo! My macros are now (semi) hygienic
- From: Ron Garret
- Re: Woohoo! My macros are now (semi) hygienic
- From: Leslie P. Polzer
- Re: Woohoo! My macros are now (semi) hygienic
- From: Ron Garret
- Re: Woohoo! My macros are now (semi) hygienic
- From: Kaz Kylheku
- Re: Woohoo! My macros are now (semi) hygienic
- From: Maciej Katafiasz
- Woohoo! My macros are now (semi) hygienic
- Prev by Date: ANNOUNCE: Lexicons are (finally!) ready for viewing
- Next by Date: Re: Woohoo! My macros are now (semi) hygienic
- Previous by thread: Re: Woohoo! My macros are now (semi) hygienic
- Next by thread: Re: Woohoo! My macros are now (semi) hygienic
- Index(es):
Relevant Pages
|