On Tue, 12 Mar 2019 at 21:56, Marcus Denker <marcus.den...@inria.fr> wrote:
>
> Hi,
>
> Yes, I do not like it… I think it is there so that you can just make a 
> variable subclass and at: / at:put: will work without
> having to re-implement them…

So we should consider...
* how often are variable subclasses created ?  by novices or experts ?
* how much work is it to reimplement those methods ? how difficult to
know what needs to be done ?
* what is the balance

cheers -ben


>
> Marcus
>
> On 12 Mar 2019, at 04:55, Richard O'Keefe <rao...@gmail.com> wrote:
>
> I understand #basicAt:[put:] being in Object, but I never understood 
> #at:[put:] being there.
> GNU Smalltalk:
> st> nil at: 1
> Object: nil error: Invalid value nil: object not indexable
> In my Smalltalk, you get a DNU.
> In Squeak you get a debugger window with title
> Error: instances of UndefinedObject are not indexable
> The same for Boolean, Character, and Integer,
> except Squeak where (20 factorial at: 1) answers 0 (oh dear oh dear oh dear).
> In VW you get a "Subscript out of bounds" error, which is disappointing,
> as do true and $a, but a LargePositiveinteger gets #shouldNotImplement.
>
>
> On Tue, 12 Mar 2019 at 15:28, Tim Mackinnon <tim@testit.works> wrote:
>>
>> If you forget to initialise a variable which you thought was a Dictionary - 
>> you get a confusing error message: "Error: only integers should be used as 
>> indices” if you try an at:put:
>>
>> This is a consequence of having at:put: defined on Object (which is a bit 
>> nasty)
>>
>> Should UndefinedObject at least override this and signal something a bit 
>> more obvious? This is a common and easily done thing and we don't support it 
>> very well.
>>
>> I just did it in some code, and was scratching my head initially until I 
>> read the stack properly and realised it was something much simpler than I 
>> thought I had done.
>>
>> Any thoughts on this?
>
>

Reply via email to