ANSI Smalltalk-98 Errata

The ANSI Smalltalk Standard was first published in 1998. Since that time, users of the standard have uncovered many places where the standard is unclear, inconsistent, or incorrect. Therefore, the ANSI Smalltalk-98 Errata was created to capture these errors and inconsistencies and to propose corrections for them.

I am organizing the errata pages based on section headings of the original standard (ex., "Errata, 3.4 Method Grammar") along with a page for "Errata, Miscellaneous" to hold items that span multiple sections.



(I wrote a parser for the standard a long time ago and found many problems. Here are some from my notes, perhaps they can help us to decide the categories of problems we are interested in - peter)
  • the return values specifications for these message specifications are problematic '' '''
  • has a mistake, should have:

nameString := 'newElements'
typesString := 'sequencedCollection'
aliasingString := 'unspecified'.

  • in parameter specifications the standard text does not always have a space between the parameter name and the parameter type
  • some message specifications have no synopsis line
  • the structure of these return values specifications is problematic:
    • '' '' "have comment lines added on"
  • for #withAll: the synopsis in all the redefinitions is better than the one in the definition
  • The Description section of '5.6.2' contains the misspelled word "operaand".
  • In section '5.6.8', the description of the Standard Global 'Float' contains "The value of this global is equivalent to the value of one of the globals: FloatE, FloatE, or FloatE." The latter part of this sentence should instead reference "FloatE, FloatD, or FloatQ."
  • The protocol conformance relationship diagram in section 5.6 contains several protocol names that are capitalized, but should start with a lower-case letter. These are: <magnitude>, <number>, <integer>, and <scaledDecimal>.

Semantic changes

* (replaceFrom:to:withObject:) should have the Errors section rewritten like this (cfr
**start > receiver's size + 1 (is this actually necessary, both here and in
**start < 1
**stop > receiver's size
**stop < start - 1
Syndicate content

User login