[squeak-dev] Re: printing collections

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Tue Nov 3 21:51:06 UTC 2009


2009/11/3 Eliot Miranda <eliot.miranda at gmail.com>:
>
>
> On Tue, Nov 3, 2009 at 1:06 PM, Nicolas Cellier
> <nicolas.cellier.aka.nice at gmail.com> wrote:
>>
>> 2009/11/3 Andreas Raab <andreas.raab at gmx.de>:
>> > Nicolas Cellier wrote:
>> >>
>> >> While at isSelfEvaluating, I wonder why we do not abuse {..} notation
>> >> a bit more.
>> >> Instead of printing 'aSet( 0 at 0 1 at 2 )'
>> >> we could just make it evaluate proof '{0 at 0. 1 at 2} asSet'
>> >>
>> >> Of course, with limited stream, we take the risk of loosing trailing '
>> >> asSet' information.
>> >> So we can also print using a less nice but still evaluating 'Set
>> >> newFrom: {0 at 0. 1 at 2}'.
>> >>
>> >> As a bonus, generalizing this behaviour might also eliminate a few
>> >> bytecodes and methods from the Kernel.
>> >>
>> >> Same for storeOn:
>> >>
>> >> What do you think ?
>> >
>> > -1. The goal of printing isn't to make parsing easier. In fact I find
>> > this
>> > to be the least useful application of {} - the advantage of the syntax
>> > form
>> > is that it is immediately recognized and consequently requires less
>> > effort
>> > than having "an Array(". That you can also evaluate it in some
>> > situations is
>> > a useful side effect but no more.
>> >
>> > Cheers,
>> >  - Andreas
>> >
>>
>> OK, I see ' newFrom: ' can be considered as noise, so we can't have
>> our cake and eat it too ?
>> I find the fact that simple objects print as a simple code snippet
>> such a nice feature though...
>> Set << {0 at 0. 1 at 2} would be short, but I guess introducing a new binary
>> selector will be hard to sell :)
>
> yuck.  asSet is readable and in the Smalltalk tradition.  << sMLells ;)

Like http://en.wikipedia.org/wiki/ML_%28programming_language%29 ?
Oh, didn't know about this one
http://en.wikipedia.org/wiki/Miranda_%28programming_language%29

Using asSet is taking the risk of loosing class information because of

printStringLimitedTo: limit
	"Answer a String whose characters are a description of the receiver.
	If you want to print without a character limit, use fullPrintString."
	| limitedString |
	limitedString := String streamContents: [:s | self printOn: s]
limitedTo: limit.
	limitedString size < limit ifTrue: [^ limitedString].
	^ limitedString , '...etc...'


>>
>> Nicolas
>>
>
>
>
>
>



More information about the Squeak-dev mailing list