Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!ucsd!ucsbcsl!eiffel!bertrand From: bertrand@eiffel.UUCP (Bertrand Meyer) Newsgroups: comp.lang.eiffel Subject: Note on subsequent long message <> Keywords: Eiffel type system, double precision, C interface, composite objects, copy semantics Message-ID: <132@eiffel.UUCP> Date: 2 Apr 89 01:32:37 GMT Organization: Interactive Software Engineering, Santa Barbara CA Lines: 58 The message posted after this one, entitled ``Eiffel types'' and numbered <>, is a draft of an article on the Eiffel type system, which will be adapted as a part of the 2.2 documentation. The present message explains the purpose of ``Eiffel types'', which is long. I hesitated before posting such a long note as ``Eiffel types'' but it seems that the potential benefits outweighed the standard objections. ``Eiffel types'' is NOT the article on ``The complete rules for type checking in Eiffel'' (``Type checking'' for short) which many people (something like 300) requested after I mentioned it on the net some time ago. ``Type checking'' complements ``Object-Oriented Software Construction'' and the Eiffel User's Manual by explaining the complete rules for Eiffel systems to be typewise correct. ``Type Checking'' is mostly of theoretical interest; the problems it addresses, although visible to people who look at Eiffel from an academic point of view, arise very seldom in practical Eiffel usage. In contrast, ``Eiffel types'' deals with very important improvements, both theoretical and practical, of the type system. These improvements are part of version 2.2. The main theoretical advance is to make the notion of type in Eiffel completely regular: all types are now classes; the basic types (INTEGER, REAL, CHARACTER, BOOLEAN) become fully normal classes of the Basic Eiffel Library. This approach contains the germ of a theory of types for which (as is appropriate for an area of applied mathematics having to do with automatic computing devices) the only predefined type is ``bit''. The practical advances are numerous: improvements in efficiency through avoidance of unneeded dynamic allocations and indirections; double precision reals (or, for that matter, arbitrary precision reals or integers); more flexible interface with C and other languages; a simple form of operator overloading; easier bit string manipulation; etc. Because ``Eiffel types'' has to do with the type system of Eiffel, I have decided to merge it with ``Type checking'' but this will take some time. This is the reason while I have not mailed ``Type checking'' yet to those who requested it. That will come. Sorry for the delay. Since ``Eiffel types'' opens possibilities of immediate interest for Eiffel users, it appeared appropriate to post it without delay. ``Eiffel types'' is posted in <> in nroff-ed form. This is less than perfect because the original uses italics, bold face, tables and other typographical niceties. I considered posting the original troff form but it depends to heavily on our local macro package. If there are any follow-ups they will be somehow forwarded to me but I won't be able to respond soon, since I will be roaming the world for the next few weeks with little likely access to news. Enough apologizing for one message. -- -- Bertrand Meyer bertrand@eiffel.com