Newsgroups: comp.lang.eiffel
From: arh@cix.compulink.co.uk (Andrew Henson)
Subject: TITLE: "Eiffel: The Language" 2nd printing ERRATA
Reply-To: arh@cix.compulink.co.uk
Date: Thu, 21 Jan 1993 23:57:00 +0000


There is a partial errata I've picked up from the 2nd printing.
There are a lot of improvements over the 1st printing, especially in
the code fragments near the back, but there's some way to go!


p88: Margin note on NONE

States that NONE is the type of address parameters.  Since the
introduction of POINTER (now listed as a reserved word in the 2nd
printing this is no longer the case.  (in the 1st printing POINTER
does not appear).


p241:  Caroline.pay_salary

style rules suggest this should be `caroline', not `Caroline'. (What
happened to `jane' from the first printing?).


p388:  Real constants (box) :  a.b
       where a & b are integer constants.

This implies 1.-2 is a legal real :-)
Also it would be nice to have some examples with underlines on this
page, e.g. 1_234.5


p419: "With the exception of @ for arrays, free operators are not
       used in the Basic libraries..."

infix "#" is used on p480 in the basic libraries


p422:  String_with_backspace:INTEGER is "AAA%BZZZ"

Should be :STRING

This page also needs to mention comments - specifically is
  -- increases by 50%.
illegal because "%." is not a legal % sequence, and is %N, viz:
  class ANY -- header comment%N inherit PLATFORM end
a valid way of terminating a comment?


p434:  class interface ANY exported features

Elsewhere, shortforms used
   class interface CLASNAME feature specification

so why the change?


p435:  frozen clone

is correct, but the margin comment on p543 would be useful here.


p436:  Maximum_character_code >= 128

Why 128?
If using ASCII, codes run from 0 to 127.  Should it be >= 127 ?


p453:  is_developer_exception(code:INTEGER):INTEGER

should be ...):BOOLEAN
as should the next: is_assertion_violation ... :BOOLEAN

(Note to those with 1st printing: these are new in 2nd printing;
good software engineering technique - changing the spec without
telling anyone :-)).


p471 (chapter31): out(x)

Should be x.out


p472: io.putstring(out(temperature))

Should be io.putstring(temperature.out)


p474: readstream

Is this correct?  Should it be readstring?


p491: feature
        set(minindex,maxindex:INTEGER) is

a) Since it's defined as `make' in `creation', it should be `make'
here (1st printing called both `set').

b) since --`lower' initialised to 0 by default
is assumed, then is should only be called as a creation, so it should
be exported to none.

i.e.  feature {NONE}
        make(minindex,maxindex:INTEGER) is

c) so now we need a new
      feature
before lower: INTEGER so we can start exporting again.


p491(again): empty_if_impossible: minindex < maxindex implies count=0

Nope!  Try ">"


p571: Parent_list

`end' here is ambiguous with `end' from Class_declaration if no 
rename, export, undefine, redefine or select preceed.


p572: New_export_item
      Class_name box

Should be Feature_name


p572(again): Routine

Should optionally allow `else' and `then' after require and ensure


p573: Instruction

if and inspect paths allow `end' to be omitted

creation needs an identifier before .unqualified_call


p574: Loop

after variant a Tag_mark is permitted. Called \box{Identifier}\box{:}
in this appendix.


p574(again): Call

Identifier is an alternative to ( Expression )
e.g. io.newline   as well as
     (io).newline
This error also occurs in appendix H & I.

--------------
Andy Henson;  voice: +44.923.825275;  voicemail: +44.426.910223
arh@cix.compulink.co.uk; Cix is a mail service: I'm independant.