NICE-ESG-Libs Digest        Fri, 12 May 95       Volume 1 : Issue 219 

Today's Topics:
                     Format of FTP-able documents
                     General comments on PELKS 7
           NUMERIC, REAL, DOUBLE, INTEGER - first thoughts


NICE Eiffel Standards Group -- Library Committee Mailing List To post to list: NICE-ESG-Libs@atlanta.twr.com To send mail to the Chairman of the committee: NICE-ESG-Libs-chair@atlanta.twr.com Administrative matters (sign up, unsubscribe, mail problems, etc): NICE-ESG-Libs-request@atlanta.twr.com
Date: Fri, 12 May 95 09:20:43 PDT From: bertrand@vienna.eiffel.com (Bertrand Meyer) Subject: Format of FTP-able documents To: nice.lang@vienna.eiffel.com, nice.lib@vienna.eiffel.com Copy to: From: Bertrand Meyer Mailer: BOOM Dear Colleagues: The submitted forms of both the Kernel Library and Language draft standard proposals (please note the three qualifiers ``submitted'', ``draft'' and ``proposal'') are available through FTP from our site, in FrameMaker 4 as well as PostScript formats. (The PELKS is also available in ASCII.) FrameMaker has announced a new version, 5.0, which seems interesting; in particular it supports HTML. We haven't received it yet but it seems that if it indeed works as advertized we will probably want to switch to it soon. This would mean that future versions of the documents would also be in the 5.0 format, which (barring miracles) will probably not be readable under earlier releases. The Postscript format should not be affected. Is that a problem for those of you that have been using the FrameMaker forms? -- BM
Date: Fri, 12 May 1995 15:38:50 +0100 (BST) From: S M Fisher Subject: General comments on PELKS 7 To: NICE Library Committee Hi, 1) The standard now (unlike the ADA standard) allows vendors to provide more but not less. I would like to require vendors claiming PELKS compatability to agreee to list in some form all that they provide in their kernel which is not part of PELKS and to provide a basic PELKS as well as their enhanced one. Users wanting portability can use the basic PELKS and be sure that their code will port to another vendor who supports PELKS. 2) The standard does not describe the interdependencies between features and classes. For example the connections between copy, clone and is_equal which cannot (I think) be addressed readily by pre and postconditions. If a user inherits and redefines something in PELKS which he will certainly have to do for any container classes he builds to ensure sensible behaviour of copy/clone/is_equal then he has to be aware of the implemenation of that feature. Typically one has to modify copy and is_equal because clone calls copy (maybe via twin) - but this is not guaranteed. (This has already been mentioned in NICE-ESG_libs Digest 211, 212 and 213). Another example, also from class GENERAL are the output features. The Tower version of `print' is simply `io.putstring(some.out)' so if a user redefines `out' then `print' follows automatically. This problem exists in principle for all features which make use of other features (except for the few which are frozen). What is the solution? I can suggest a few: a) Make the code the standard - this is probably not practical for those classes which are recognised by the compiler itself and for those calling out to vendor specific C routines. It would however obviously eliminate the annoying differences between the libraries if they were identical (apart from the very lowest level) and reduce work. b) Tell people that to use PELKS in a way which guarantees portability they may not redefine features except for some cases which will be listed. Sufficient cases must of course be listed for this to be useful. This means a lot of care defining dependencies. c) Tell people that to use PELKS in a way which guarantees portability they may not redefine features at all - in which case they may as well all be frozen. This is simple but is too restrictive. I prefer a or b 3) I would like to see the changes which have been agreed so far to PELKS 7 to be incorporated in a new document ... PELKS 8. Maybe it already exists somewhere. The version number should be prominent on the front cover. 4) Christine has just asked for comments on NUMERIC, INTEGER, REAL and DOUBLE. Could we not do ARRAY and STRING at the same time. There is little coupling between the first four classes and these two so it should allow us to speed up a bit. Steve Fisher
Date: Fri, 12 May 1995 17:46:36 +0100 (BST) From: S M Fisher Subject: NUMERIC, REAL, DOUBLE, INTEGER - first thoughts To: NICE Library Committee NUMERIC I prefer to define the infix "^" as taking only a integer argument This is then always defined for exponent > 0 a ^ 4 = a * a * a * a. a ^ zero = one a ^ -n = one / a ^ n This will then work properly for square matrices for example. I think that the current SiG and Tower libraries which only accept positive integers are unnecessarily restrictive. REAL / DOUBLE the precise format of the string returned by the `out' feature needs defining, otherwise test results vary from compiler to compiler. This includes field width, number of significant figures, when to switch to `scientific notation', whether or not to precede the exponent with 0s e.g. 1.23E01 or 1.23E1 We need all the common functions to avoid the necessity for single and double precision maths classes. This will allow a class to work easily with mixed double and single precision without having to do a lot of renaming. I would like to see features cos, sin, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh and atanh, ln, log (or log and log10) and pi However I do NOT want to see rndm. `pow' or `power' is needed to take a real/double argument and return a real/double This just leaves atan2 which is a nuisance because as a function it has two arguments. a := y.atan2(x) is a possibility. REAL / DOUBLE / INTEGER I suggest instead of features such as truncated_to_integer we use to_integer, to_real and to_double. In some cases this is not as explicit, but it means that when we have an INTEGER or a DOUBLE and we want a REAL then to_real will do the job irrespective of whether or not there will be some loss of precision. Regards, Steve Fisher