Initial core port of "Squeak Traits"

Brian Rice water at tunes.org
Thu Nov 24 09:31:10 PST 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


On Nov 24, 2005, at 6:21 AM, Márton Sasvári (IJ/ETH) wrote:

> I was reading through the new traits code the other day and got  
> stuck on the following lines:
>
> ---
> ts@(TraitSum traits) services [Set new].
>
> ts@(TraitSum traits) services
> [ts bases reduce: [| :b1 :b2 | b1 services union: b2 services]].
> ---
>
> and later
>
> ---
> to@(TraitOverride traits) services
> "Act like the overlay itself."
> [to overlay services].
>
> to@(TraitOverride traits) services
> "Apply the overlay to the underlying Trait."
> [to overlay services over: to base services].
> ---
>
> isn't this a rebinding of the method loosing the first definition  
> immediately ? What's going on here if not ?

Oh, that's just a mistake from my initially defining a #services vs.  
#fullServices (first-level vs. recursive tallying up of services). I  
changed the sense of #services to mean #fullServices, and merged the  
methods; obviously I forgot to clean that one up. The second method  
is the correct one.

> Actually I was looking for the #services method definitions to find  
> out the purpose why they aren't defined as a slot on Trait right  
> away as it is implicitly assumed that the answer to #services will  
> undestand #keysDo:, #keysAndValuesDo: etc., but I gave up at this  
> point.

Because TraitComponent plays that role of being a concrete holder of  
services. Everything else is an operation on those (+, -, over:,  
excluding:). And yes, Trait newFrom: Mapping, or Mapping as: Trait  
should make a new TraitComponent; at least, I need to make sure  
that's easy enough to do.

- --
- -Brian
http://tunes.org/~water/brice.vcf

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)

iD8DBQFDhfjjPVkAvLW1zf4RAgwkAKCTTv5ZNpcNG7n1+qmTrgMSlZOL3ACgwRlr
Wkp6fMFM6hjfeMQnELozjzs=
=pw55
-----END PGP SIGNATURE-----




More information about the Slate mailing list