Prevent cloning of clones

Adde adde at trialcode.com
Wed Apr 27 01:26:30 PDT 2005


Replying to myself here, the last code snippet should be:

uv@(Pixel baseValue traits) toXML [
 (uv value toXML) ; (uv unit abbrev toXML)
].

since you don't wan't to dispatch on that specific object.

/Adde

Adde wrote:

> Brian Rice wrote:
>
>> On Apr 26, 2005, at 1:54 PM, Brian Rice wrote:
>>
>>> On Apr 26, 2005, at 1:37 PM, Adde wrote:
>>>
>>>> It's highly likely that this is just me programming 
>>>> over-defensively. I've spent a considerable part of my life trying 
>>>> to please C++.
>>>> But, I feel that the only Units that should be used with toXML are 
>>>> Units for which someone has specified an XML representation 
>>>> (overridden toXML). Lengths counts as SVG units the second someone 
>>>> specifies how a Length should be formatted in in an SVG Document.
>>>> This feels like a problem that's bound to come up again, that you 
>>>> wan't to add special formatting to specific kinds of Units (instead 
>>>> of adding it to BaseUnit).
>>>> I fully agree that the Pixel unit probably belongs in some kind of 
>>>> Graphics namespace, though.
>>>
>>>
>>>
>>> Fair enough. I can add Length/other-dimension subtypings for the 
>>> various kinds of units for dispatch hooks.
>>
>>
>>
>> I'm going to delay adding this yet, as I'm not sure if it'd work fine 
>> in the obvious manner, although there is already TemperatureUnit 
>> distinguished from other types. It'll probably happen soon.
>
>
> I can see where it could be useful to have a hierarchy to enable you 
> to override behaviour for entire subtrees of Units. In this case I'm 
> probably better of overriding individually for each of the units I'm 
> interested in (cm, mm, em and px) though.
>
> What I wan't to do is overriding formatting behaviour for UnitValues 
> having specific Units.
> As I understand it the only way to dispatch formatting of a UnitValue 
> on it's Unit is by overriding the creation of UnitValues for that 
> specific Unit and then dispatching on the type of UnitValue as ususal. 
> Am I missing something? Is it possible to dispatch on slots of an object?
> One way to make it easier would be if each Unit contained a slot with 
> it's own UnitValue that is cloned when creating values, then you could 
> dispatch on it like this:
>
> uv@(Pixel baseValue) toXML [
>  (uv value toXML) ; (uv unit abbrev toXML)
> ].
>
>>> On a related note, the with: message is supposed to work with 
>>> arbitrary objects (e.g. "4 with: lobby" should turn into "4 
>>> lobbies"), and doesn't, so I'll fix that while my mind is on it as 
>>> well.
>>
>>
>>
>> This is done, although I backed away from the printout style. I also 
>> renamed with: to of: since it reads better (and we have other 
>> selectors with with: keywords). Now it'll do "4 of: Namespace" for "4 
>> of: lobby" - it's not terribly good, just counting things that 
>> satisfy isSameAs: but that can be parametrized. I'm sure I won't hear 
>> about this feature for a few months at least, though.
>>
> of: is definitely better than with:.
>
>> -- 
>> Brian T. Rice
>> LOGOS Research and Development
>> http://tunes.org/~water/
>>
> /Adde
>




More information about the Slate mailing list