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.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,73cb216d191f0fef X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII X-Received: by 10.180.20.239 with SMTP id q15mr1252499wie.7.1364345015529; Tue, 26 Mar 2013 17:43:35 -0700 (PDT) Path: p18ni19821wiv.0!nntp.google.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!216.40.29.245.MISMATCH!novia!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsgate.cuhk.edu.hk!news.glorb.com!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Is this expected behavior or not Date: Sat, 23 Mar 2013 11:19:37 +0100 Organization: cbb software GmbH Message-ID: <1upbnm5cl13bs$.pzszb0e3v9zo.dlg@40tude.net> References: <514874d3$0$6628$9b4e6d93@newsspool2.arcor-online.net> <1o60gooo8xvba$.1ei9cebb07zek$.dlg@40tude.net> <514897bd$0$6641$9b4e6d93@newsspool2.arcor-online.net> <1oqwvcemo8dha$.hevuedtz8eze.dlg@40tude.net> <14aijp8ckzahf$.1ilfm1nw6qgyt$.dlg@40tude.net> <1xg9wka6slgit.1q0leacagdeuv.dlg@40tude.net> <10cliooad0uk.1prxobehp9yr0.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: XRUMb5xlbonTNodERpEXEw.user.speranza.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Date: 2013-03-23T11:19:37+01:00 List-Id: On Sat, 23 Mar 2013 10:02:11 +0100, J-P. Rosen wrote: > Le 23/03/2013 09:14, Dmitry A. Kazakov a �crit : >> declare >> X : Positive; >> begin >> X := -1; -- With Integer it behaves *differently* >> end; >> >> So, WHERE is the difference, what make the program above to work >> differently, if everything [value, type, operation] is SAME? > The values are the same, the subtype is a property of a variable. And an operation should *know* the properties of involved operands beyond values and types. Right? > The assignment behaves the same: check that the value belongs to the > allowed values for the variable, and raise C_E if not. Of course it is the same assignment, according to you. Why the effect is different? > The check > succeeds for some variables, and fails for others. This does not mean it > is a different operation. But the ultimate effect of the operation is different when check fails. > Once again: a subtype is just an extra check added in some contexts to > some objects. It does not define a new set of values, i.e. the "1" for > Positive is the same as the "1" for Integer (while it is different from > the "1" of some user defined type). And 0xFF is same for signed and unsigned char. This is why C is called weakly typed. It is no matter how do you call what is going on. Only the effect matters. The effect is that the behavior changes. Check is needed to be put somewhere. Programmers design programs in terms of values, operations and types. You can consider check an operation or a part of. You can consider check a part of the type which magically changes the behavior of operations defined on the type. In any case, it will have the effect of making some aspect of Positive different from Integer. Which makes it a different type. And this is clearly the intent of the programmer using Positive. Because otherwise he would use Integer. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de