[ANSI-Smalltalk] #peekFor:
John O'Keefe
wembley.instantiations at gmail.com
Mon Oct 6 15:32:11 BST 2008
I suspect that rather than ignoring the standard when implementing
#peekFor:, most/all Smalltalk implementations already had #peekFor:
implemented. Just to add to the list, the VA Smalltalk #peekFor:
implementation (from 6/6/96 or earlier) also advances the stream when
answering true.
Could this not be considered a documentation oversight that is a candidate
for the Errata STEP? Oh, what Errata STEP? Bad me -- I'm the one who was
supposed to create that STEP.
John O'Keefe [|], Principal Smalltalk Architect, Instantiations Inc.
On Wed, Oct 1, 2008 at 2:42 AM, Damien Cassou <damien.cassou at gmail.com>wrote:
> I noticed that too when doing Nile. It seems all implementations
> decided to implement #peekFor: the same way, ignoring the standard. I
> think the standard behavior is useless here because it is equivalent
> to "stream peek = anObject" which is clearer that way.
>
> On Wed, Oct 1, 2008 at 3:35 AM, Richard O'Keefe <ok at cs.otago.ac.nz> wrote:
> > In the Smalltalk standard, we read
> >
> > 5.9.2.8 Message: peekFor: anObject
> > Synopsis
> > Peeks at the next object in the stream
> > and returns true if it matches the argument,
> > and false if not.
> > Definition: <gettableStream>
> > Returns the result of sending #= to the first object
> > in the receiver's future sequence values with anObject
> > as the argument. Returns false if the receiver has
> > no future sequence values.
> > Parameters
> > anObject <Object> uncaptured
> > Return Value
> > <boolean> unspecified
> > Errors
> > none
> >
> > There is no faintest suggestion here that the state of the
> > stream changes in any way. In particular, there is no
> > suggestion that a successful match will result in the stream
> > being advanced.
> >
> > However, the Blue Book says on page 199
> >
> > Determine the response to the message [#]peek.
> > If it is the same as the argument, anObject,
> > THEN INCREMENT THE POSITION REFERENCE and
> > answer true. Otherwise answer false and do
> > not change the position reference.
> >
> > The comment in VisualWorks says
> >
> > Answer false and do not move the position
> > if self next ~= anObject or if the receiver
> > is at the end. Answer true and
> > INCREMENT POSITION if self next = anObject.
> >
> > The comment in Squeak says
> >
> > Answer false and do not move over the next element
> > if it is not equal to the argument, anObject, or
> > if the receiver is at the end. Answer true and
> > INCREMENT THE POSITION for accessing elements,
> > if the next element is equal to anObject.
> >
> > When I wrote my stream classes, I took the standard text literally,
> > and my #peekFor: never advanced the stream position. Whoops!
> > I propose the following replacement for the definition:
> >
> > Definition: <gettableStream>
> > If the receiver has no future sequence values,
> > returns false. Otherwise, determines the result of
> > sending #= to the first object in the receiver's
> > future sequence values with anObject as the argument.
> > If that is false, return false with no change to the
> > receiver's state. If #= answers true, the first
> > object is removed from the receiver's future sequence
> > values and appended to the end of the receiver's past
> > sequence values, then true is returned.
> >
> >
> >
> >
> >
> > _______________________________________________
> > ANSI-Smalltalk mailing list
> > ANSI-Smalltalk at lists.openskills.org
> > http://lists.openskills.org/cgi-bin/mailman/listinfo/ansi-smalltalk
> >
>
>
>
> --
> Damien Cassou
> Peter von der Ahé: «I'm beginning to see why Gilad wished us good
> luck». (http://blogs.sun.com/ahe/entry/override_snafu)
>
> _______________________________________________
> ANSI-Smalltalk mailing list
> ANSI-Smalltalk at lists.openskills.org
> http://lists.openskills.org/cgi-bin/mailman/listinfo/ansi-smalltalk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.openskills.org/pipermail/ansi-smalltalk/attachments/20081006/a8f12c6f/attachment.html
More information about the ANSI-Smalltalk
mailing list