I forgot it because the API of Transcript is totally undefined. I have no idea about what store: is about.
What I wanted is to have a transcript that can be used to understand concurrent programming.

Stef

On Nov 18, 2013, at 5:26 PM, phil@highoctane.be wrote:

Sure but still, why isn't store: in the Transcript for these? As they are in the other classes 

 



On Mon, Nov 18, 2013 at 5:19 PM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
You could try using #storeString as in

Transcript show: (1 / 2) asScaledDecimal storeString

Sven

On 18 Nov 2013, at 17:09, phil@highoctane.be wrote:

> I was playing with ScaledDecimal when doing experiments with numbers in Pharo.
>
> Now, ScaledDecimal says in its comment:
>
> "Note that a ScaledDecimal does not printOn: exactly, however it will storeOn: exactly because the full precision fraction is kept in memory."
>
> This happens to be right when inspecting the expressions.
>
> Now, I tried to do the following:
>
> x := 2 asScaledDecimal.
> y := 1 asScaledDecimal.
>
> z := (y / x).
>
> z storeOn: Transcript.
>
> And z storeOn: Transcript fails miserably.
>
> This is due to storeOn: doing:
>
> storeOn: aStream
>       "ScaledDecimal sometimes have more digits than they print (potentially an infinity).
>       In this case, do not use printOn: because it would loose some extra digits"
>
>       self shouldBePrintedAsLiteral
>               ifTrue: [self printOn: aStream]
>               ifFalse: [aStream
>                       nextPut: $(;
>                       store: numerator;
>                       nextPut: $/;
>                       store: denominator;
>                       nextPut: $s;
>                       store: scale;
>                       nextPut: $)]
>
> And store: doesn't exists in the ThreadSafeTranscript which happens to be no stream at all.
>
> Try this out:
>
> x := 2 asScaledDecimal.
> y := 1 asScaledDecimal.
>
> z := (y / x).
>
> "works"
> 5.0 storeOn: Transcript.
> Transcript flush.
>
> "works"
> (1/2) storeOn: Transcript.
> Transcript flush.
>
> "fails"
> z storeOn: Transcript.
> Transcript flush.
>
> "works"
> s := (String new: 30).
> st := s writeStream.
> z storeOn: st.
> Transcript
>       show: 'storeOn: ', st contents;
>       cr;
>       show: z.
>
> Kind of annoying to do while explaining to kids.
>
> The ThreadSafe transcript looks like to be subclassed from Object and being no real stream at all.
>
> Why is it so?
>
> Phil
>
>
>