[Newbies] Re: Re: error trap

Roel Wuyts Roel.Wuyts at ulb.ac.be
Thu Aug 10 15:27:09 UTC 2006


Note: no need for the endEntry when using show: it does it already  
(see TranscriptStream>>#show: )

Use a 'manual' endEntry when you would use nextPutAll: or print: etc.  
on the Transcript (which most people do not use anyway).


On 10 Aug 2006, at 17:02, Ron Teitelbaum wrote:

>
>> From: Klaus D. Witzel
>>
>> On Wed, 09 Aug 2006 21:11:40 +0200, Ron Teitelbaum wrote:
>>> Brian,
>>>
>>> Yes I agree it's a great suggestion, although a few changes:
>>> Literal blocks to not parse into collections automatically.
>>
>> Ron, please: a literal Array is a subclass of Collection and so  
>> the blocks
>> in
>>
>>   { [nil]. [true]. [false] }
>
> Learn something every day!
>
>>
>> parse "into collections automatically". You didn't inspectIt for  
>> verifying
>> your (false) claim, didn't you.
>
> No I didn't!  The { } just looked so wrong and like C!  I'm used to  
> #()
> which of course doesn't work.
>
>  Also, have a look at the implementors of
>> #caseOf: and #caseOf:otherwise:, they are heavy users of literal  
>> blocks in
>> Collections ...
>
> I will!
>
>>
>> ...
>>> Each in this case is already a block.
>>
>> Yes. And, into the other direction, even in good core methods one  
>> often
>> finds things like
>>
>>   ^ dict at: aKey ifAbsent: [nil]
>
> I started to write this too but thought about some of the errors  
> that people
> receive about wrong form of block and didn't want to scare people.
>
>>
>> There seems to be a "natural" confusion between "object" value and  
>> block
>> "value". Not a big surprise since Java and other procedural-oriented
>> friends do not offer block values. So any demo of using blocks "as  
>> if"
>> they where any other object, as Brian has shown, is a sign for the  
>> ability
>> to master the subject 8-)
>>
>>> Only each is needed.
>>
>> Absolutely.
>>
>>> So here is a version that works.
>>>
>>> (OrderedCollection new
>>> add: [10/0];
>>> add: [2 raisedToInteger: 1/2];
>>> add: [-5 raisedTo: 1.5]; yourself
>>> ) do: [:each | each on: Exception do: [:ex | Transcript show: ex;  
>>> cr;
>>> endEntry]].
>>>
>>> endEntry is for Klaus!
>>
>> Hhm, endEntry is too expensive within any and every loop. Just put
>> Transcript endEntry after the loop. I mentioned endEntry because
>> Transcript almost always does not display the last lines (they are
>> buffered) and people get confused and believe that either their  
>> code or
>> Squeak is wrong (but both is not the case).
>>
>>> It is a very good suggestion Brian!
>>
>> Indeed, and Briant's use of literal blocks in a literal Array is  
>> perfect
>> (in the sense of: cannot be made better).
>>
>
> Thanks for your correction Klaus!  With programming always keep an  
> open
> mind, there is lots more to learn!
>
> Ron
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>



More information about the Beginners mailing list