[closer-devel] LAYER-NAME vs LAYER in ADJOIN-LAYER/REMOVE-LAYER.
Pascal Costanza
pc at p-cos.net
Thu Jul 2 12:19:45 UTC 2009
Hi there,
Sorry for the late reply, we're pretty busy around here with some last
project proposal writing before the summer holidays.
I understand your concern, and the suggested fix certainly makes it
work. However, it's not so nice, because this will needlessly
increases the cache sizes, because every named layer may end up twice
in the caches, once based on the names, and once based on the
metaobjects.
I see two ways out: Either I use the metaobjects everywhere, and use
the names only for the user-level macros (which expand into code that
converts the names into metaobjects as soon as possible.
Or I make sure that anonymous layers have unique names as well: At the
moment, their names are 'nil, but I could use the metaobjects
themselves as 'names'. (For example, (layer-name #<STANDARD-LAYER-
CLASS NIL 21ECFE23>) => #<STANDARD-LAYER-CLASS NIL 21ECFE23>.
The first option may conceptually be cleaner, but requires more work
and may potentially break some existing code (not sure about the last
point, but my gut feeling tells me that there are some potentially
problematic corner cases waiting for me if I go down that path).
The second option is relatively easy to do. It may still require a
couple of changes here and there, but I don't expect any serious
problems. Somehow, I prefer that you can use the layer names in the
functional API (adjoin-layer, remove-layer, ensure-active-layer, and
friends).
Does anybody have any strong opinions about this?
Anyway, thanks a lot for raising this issue, I wouldn't have noticed
that problem otherwise. The ContextL MOP is the least polished part of
ContextL, so such feedback is especially useful. May I ask what you
are actually using this for? (I like abuses of language constructs,
this usually gives hints for new ideas for missing features...)
Best,
Pascal
On 24 Jun 2009, at 18:06, Drew Crampsie wrote:
> Hello,
>
> I'm sure i'm abusing contextl in some way (anonymous layers that
> themselves are layered classes), but for my code to work the call to
> ADJOIN-LAYER in REMOVE-LAYER-USING-CLASS must pass the layer directly
> to ADJOIN-LAYER, not indirect through the layer name.
>
> In other words :
>
> hunk ./cx-layer.lisp 103
> - (layer-name active-layer)
> + active-layer
>
> This works for me and passes all the tests, but i'm not sure if it's
> the right thing to do... i'm likely abusing contextl in many ways ;).
>
> Cheers,
>
> drewc
>
> _______________________________________________
> closer-devel mailing list
> closer-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/closer-devel
--
Pascal Costanza, mailto:pc at p-cos.net, http://p-cos.net
Vrije Universiteit Brussel
Software Languages Lab
Pleinlaan 2, B-1050 Brussel, Belgium
More information about the closer-devel
mailing list