Lukas,

I must respectfully disagree: it is also quite similar to #copyFrom:to:, and 
behaves *completely* differently from same.  #copyFrom: really should have a 
more intention-revealing name.

Bill



________________________________________
From: pharo-project-boun...@lists.gforge.inria.fr 
[pharo-project-boun...@lists.gforge.inria.fr] On Behalf Of Lukas Renggli 
[reng...@gmail.com]
Sent: Saturday, January 01, 2011 2:06 PM
To: Pharo-project@lists.gforge.inria.fr
Subject: Re: [Pharo-project] An intuitive (or screwed) #copyFrom:

Quite some software (Seaside, Mondrian, Magritte, Pier, ...) depends
on the current implementation of #copyFrom:, as it is an extremely
efficient way to remember and restore the state of an object:

rememberReceiverDuring: aBlock
    previous := self shallowCopy.
    ^ aBlock ensure: [ self copyFrom: previous ]

I don't think that the name of #copyFrom: is misleading (it derives
from #copy). What you are looking for is #allButFirst: that goes along
with #allButFirst, #allButLast:, allButLast, #first:, and #last:.

Cheers,
Lukas

On 1 January 2011 19:39, Schwab,Wilhelm K <bsch...@anest.ufl.edu> wrote:
> Wow.  In fairness, Dolphin has one or two such oddities.  IIRC, the confusion 
> there is that external arrays (DOUBLE, DWORD, etc.) respond to #copyFrom:to: 
> in terms of bytes, not elements.
>
> The problem in this case appears to be that
>
>   'a string with some stuff in it' copyFrom:5
>
> should blow up because 5 is not a suitable source (a string of some type) 
> from which to copy a string's state.  Once it properly reports abuse, we can 
> then move on to asking whether we want a copying selector that can be so 
> easily confused with copying from an index.  It might be better named 
> #copyStateFrom:??
>
> Sorry to beat the usual drum, but it fits: silent failures need to be hunted 
> down and killed.
>
> Bill
>
>
>
> ________________________________________
> From: pharo-project-boun...@lists.gforge.inria.fr 
> [pharo-project-boun...@lists.gforge.inria.fr] On Behalf Of Stéphane Ducasse 
> [stephane.duca...@inria.fr]
> Sent: Saturday, January 01, 2011 1:29 PM
> To: Pharo-project@lists.gforge.inria.fr
> Subject: Re: [Pharo-project] An intuitive (or screwed) #copyFrom:
>
> HI sebastian
>
> If I remember correctly you are not the only one bitten by it :) so we should 
> do something
>
> Object>>copyFrom: anotherObject
>        "Copy to myself all instance variables I have in common with 
> anotherObject.  This is dangerous because it ignores an object's control over 
> its own inst vars.  "
>
> Now you enumeration is too complex for me :)
>
>> I ask because, if so, situation goes like this:
>>
>> A. we think again and decide to do the right thing or we go with the 
>> alternative which is
>> B. we leave it as invalid, as it is right now, and
>>       1. we mislead even to smalltalkers not familiarized to squeak/pharo
>>       2. we rationalize some clever way to see it as a feature even if it 
>> will mislead everybody (even ourselves in a hurry)
>>       3. we lay a foundation to lightly use protocol that is typically used 
>> in collections (to do dangerous things like instVar manipulation)
>>       4. we break encapsulation and manipulate extremely primitive things in 
>> a common sounding selector.
>>       5. we work harder on trying to give the impression that we're leaving 
>> it like that because we're smarter than the confused people that tried to 
>> use it (proving to them that we're dumb)
>>       6. we get involved in an unnecessarily complicated way of thinking 
>> that will complicate unnecessarily our future (guaranteed)
>>       7. we learn how to maintain a screwed attitude in front of people 
>> trying to use intuition when using pharo
>>       8. we stay comfortable (on the wrong foundation and for the wrong 
>> reasons)
>>
>> That would leave us with this question in the table:
>>
>> what is compatible with the Pharo's mission? is it A or B?
>
> My state of mind is always to make the world better :)
>
> Now
> - did you check the senders to copyFrom:?
>        sounds ok not so many so we could deprecated it easily
>
> - did you check in other Smalltalk if this method is used or not?
>        VW not in Object but in probe something
>
> - did you check the ansi standard?
>        I guess that this is not there.
>
> The finder says:
>        'if this isn''t broken' . 15 . 'broken'
>
> no single method, strange.... but indeed
>        'if this isn''t broken' . 15 . 20 . 'broken' find copyFrom:to:
>
> Now what would be a better name
>
>        copyFromObject:
>
> then
>
>        on String>>copyFrom: ?
>
> Even if I would prefer (but it sucks) String>>copyFromIndex:  but this is 
> more coherent with copyFrom: index to: another
>
>
> Stef
>
>
>
>



--
Lukas Renggli
www.lukas-renggli.ch


Reply via email to