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: 103376,b78c363353551702 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Received: by 10.68.238.65 with SMTP id vi1mr16926297pbc.7.1340721954896; Tue, 26 Jun 2012 07:45:54 -0700 (PDT) Path: l9ni22303pbj.0!nntp.google.com!news1.google.com!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!news.glorb.com!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: about the new Ada 2012 pre/post conditions Date: Tue, 26 Jun 2012 16:45:56 +0200 Organization: cbb software GmbH Message-ID: References: <1jvy3elqtnd1j.1sjbk32evhp1f$.dlg@40tude.net> <1oih2rok18dmt.avbwrres5k12.dlg@40tude.net> <4fe59ea0$0$9502$9b4e6d93@newsspool1.arcor-online.net> <1mkp7fzlk1b0y.1ueinfjn48fcy$.dlg@40tude.net> <4fe72b6b$0$9504$9b4e6d93@newsspool1.arcor-online.net> <1bbvp3ghpjb5s.1go1s1qvcmagh$.dlg@40tude.net> <4fe76fad$0$9507$9b4e6d93@newsspool1.arcor-online.net> <1jt8vhzxfrv2i.eohce4d3rwx1$.dlg@40tude.net> <4fe83aaa$0$6624$9b4e6d93@newsspool2.arcor-online.net> <1pkfv0tiod3rn$.onx6dmaa3if9$.dlg@40tude.net> <1i1mp8xs3vtl2.1oc4m66qtfgzq.dlg@40tude.net> <4fe9bde5$0$6566$9b4e6d93@newsspool4.arcor-online.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: FbOMkhMtVLVmu7IwBnt1tw.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 X-Received-Bytes: 3137 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Date: 2012-06-26T16:45:56+02:00 List-Id: On Tue, 26 Jun 2012 15:49:24 +0200, Georg Bauhaus wrote: > On 26.06.12 15:07, Dmitry A. Kazakov wrote: > >> They are contracts when checked statically and implementations when checked >> dynamically. > > What do pre/post implement, if so, in your view? if Pre(...) then if Post(...) then null; else raise Constraint_Error; end if; else raise Constraint_Error; end if; >> Contract violation => terminate. Exceptional state => recover. > > How does a client do make the program recover if an exception > stands for "unforeseen"? How does a client recover if X contains 3 rather than 1? Answer: it recovers by continuing its program further. > Or is an exception just a special value of a type, a value > with an "exception" label that is nothing special, but allows > an elaborate goto? Yes, exception an "ideal" value. It is used to fix contracts, when otherwise no outcome existed. E.g. Constraint_Error is the value of x/0. With Constraint_Error "+", "-", "*", "/" become defined for all possible values of the arguments. Compare to IEEE NaN, +Inf, -Inf. With exceptions you can continue execution when you otherwise could not, because exceptions add new computational states for which no value otherwise existed. Continuation goes to these states, which are called exceptional. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de