From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public X-Google-Thread: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public From: donh@syd.csa.com.au (Don Harrison) Subject: Re: OO, C++, and something much better! Date: 1997/01/22 Message-ID: #1/1 X-Deja-AN: 211369836 sender: news@syd.csa.com.au x-nntp-posting-host: dev50 references: organization: CSC Australia, Sydney reply-to: donh@syd.csa.com.au newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng Date: 1997-01-22T00:00:00+00:00 List-Id: Matthew Heaney writes: :In article , donh@syd.csa.com.au wrote: : :>:Where's the polymorphism of :>:any form here? Subtypes are ways of defining constraints (simple :>:"assertions") on the possible values of the type. Sub_Integer is not :>:a new type and is not a type derivation. So, you only have one type :>:here (Re: RM: 3.2(8)) :>: :>:The CE, is simply stating that you have violated the constraint :>:(assertion). No polymorphism broken or otherwise involved. :> :>Yes, if you define subtypes as such, then I concede it may be more reasonable :>to regard this as simply an assertion violation and declare the type system :>free of holes. It's a question of definition. : :Precisely, Don. It *is* question of definition, and we're comparing apples :and oranges. You may want to read any of Peter Wegner's papers, where he :explains the difference between a "type" and a "class." : :A type has "range" semantics. Subtypes of the type constrain the range of :values objects of the type can have. That's one view. Another view is to consider such 'subtypes' as types in their own right. This is more honest, IMO. Using this definition, neither Ada nor Eiffel is 'type-safe'. :A class has "template" semantics. A subclass specializes the behavior of :the parent. : :Jon is correct in pointing out that the example you gave is an example of :the former. Sub_Integer is a subtype (in the Wegner sense) that denotes a :subset of the values of its parent. There is no polymorphism, because we :aren't dealing with classes (in the Wegner sense). Sure. However, I am not refering to polymorphism in the usual sense. :) I originally wrote "a kind of broken polymorphism". In a more general sense, "polymorphism" means "taking many forms" which is what happens when you use a parent value where a value of a constrained child type (according to the alternative definition) is required. So, if this 'polymorphism' results in a runtime error, then it is also broken - "a kind of broken polymorphism". :(Note that the term class as used by Wegner is not the same as the Ada 95 :meaning. In Ada, a class refers to a family of types.) : :And as far as your example "proving" that Ada is not type-safe: that is :incorrect. Correct, according to the Ada definition. As Norman Cohen put it, : It shows that Ada is not subtype-safe. That becomes "not type-safe" if you regard sub-types as distinct types. : In fact the behavior proves just the opposite. I think you mean that the (primitive) assertion mechanism contributes to data integrity. It certainly doesn't 'prove' type safety. :Constraint_Error was raised because the range constraint was violated. :This behavior is similar to the Eiffel behavior when a precondition is not :satisfied. The terms of the contract between the client (the caller) and :server (the subprogram) were violated by the client, so an exception was :raised. Isn't that what you would expect to happen? Sure. However, whether or not it should happen is not the topic of discussion. Don. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Don Harrison donh@syd.csa.com.au