From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: The future of Spark . Spark 2014 : a wreckage
Date: Thu, 18 Jul 2013 09:19:52 +0200
Date: 2013-07-18T09:19:52+02:00 [thread overview]
Message-ID: <15q73x8g743d.solfjve1fywf$.dlg@40tude.net> (raw)
In-Reply-To: ks7851$3mm$1@loke.gir.dk
On Wed, 17 Jul 2013 18:08:17 -0500, Randy Brukardt wrote:
> "Shark8" <onewingedshark@gmail.com> wrote in message
> news:e7de5753-5819-41a4-a40f-3d80c101bf03@googlegroups.com...
> ...
>>The one drawback from your proposal is that it makes you reiterate the
>>condition, but with a negation, this could be a source of bugs. Even though it's a
>>little less straightforward the following would circumvent that problem:
>
>> procedure Op (x : in out T)
>> with Post => (Constraint_Error at [not?] Foo(x));
>
> I didn't mean this to be a real example. An example like the one given
> probably would have been better written as a precondition (depending on
> exactly what Foo does):
>
> procedure Op (x : in out T)
> with Pre => Foo(x) or else raise Constraint_Error,
> Post => Foo(x);
>
> which is just normal Ada 2012 code (using the raise expression, which we
> added 'after the fact' to support this usage).
Yep, and also highlights the inconvenient truth, that the "precondition" is
not a precondition but rather a chunk of executable code pushed in front of
the body.
Why not to honestly call it Prologue?
> I don't think most exception contracts would have an associated
> postcondition (that is, cause); what would the postcondition be for
> Use_Error, for instance?
If proper post-condition meant then:
ensure Foo (X) or Raised (Constraint_Error); -- Weak contract
The issue you mentioned is strong exception contract telling when the
exception has to propagate and when not. That would be:
ensure Foo (X) xor Raised (Constraint_Error); -- Explicit contract
If not Foo (X) then exception.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2013-07-18 7:19 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-08 17:56 The future of Spark . Spark 2014 : a wreckage vincent.diemunsch
2013-07-08 19:24 ` Simon Wright
2013-07-08 20:59 ` Florian Weimer
2013-07-09 7:40 ` Dmitry A. Kazakov
2013-07-09 8:30 ` Georg Bauhaus
2013-07-09 8:58 ` Dmitry A. Kazakov
2013-07-09 10:27 ` G.B.
2013-07-09 11:13 ` G.B.
2013-07-09 15:14 ` Adam Beneschan
2013-07-09 22:51 ` Robert A Duff
2013-07-10 7:49 ` Dmitry A. Kazakov
2013-07-10 8:21 ` Georg Bauhaus
2013-07-08 21:32 ` Randy Brukardt
2013-07-09 7:28 ` Dmitry A. Kazakov
2013-07-09 11:29 ` Simon Wright
2013-07-09 12:22 ` Dmitry A. Kazakov
2013-07-09 20:37 ` Randy Brukardt
2013-07-10 10:03 ` Dmitry A. Kazakov
2013-07-10 23:21 ` Randy Brukardt
2013-07-11 7:44 ` Dmitry A. Kazakov
2013-07-11 22:28 ` Randy Brukardt
2013-07-12 8:02 ` Dmitry A. Kazakov
2013-07-12 21:16 ` Randy Brukardt
2013-07-14 10:19 ` Dmitry A. Kazakov
2013-07-14 15:57 ` Georg Bauhaus
2013-07-16 0:16 ` Randy Brukardt
2013-07-17 1:30 ` Shark8
2013-07-17 23:08 ` Randy Brukardt
2013-07-18 7:19 ` Dmitry A. Kazakov [this message]
2013-07-19 4:36 ` Randy Brukardt
2013-07-16 0:13 ` Randy Brukardt
2013-07-16 8:37 ` Dmitry A. Kazakov
2013-07-16 22:13 ` Randy Brukardt
2013-07-17 7:59 ` Dmitry A. Kazakov
2013-07-17 23:26 ` Randy Brukardt
2013-07-18 7:37 ` Dmitry A. Kazakov
2013-07-19 4:32 ` Randy Brukardt
2013-07-19 7:16 ` Dmitry A. Kazakov
2013-07-20 5:32 ` Randy Brukardt
2013-07-20 9:06 ` Dmitry A. Kazakov
2013-07-12 1:01 ` Slow? Ada?? Bill Findlay
2013-07-09 7:57 ` The future of Spark . Spark 2014 : a wreckage Stefan.Lucks
2013-07-09 20:46 ` Randy Brukardt
2013-07-10 8:03 ` Stefan.Lucks
2013-07-10 12:46 ` Simon Wright
2013-07-10 23:10 ` Randy Brukardt
2013-07-11 19:23 ` Stefan.Lucks
2013-07-12 0:21 ` Randy Brukardt
2013-07-12 9:12 ` Stefan.Lucks
2013-07-12 20:47 ` Randy Brukardt
2013-08-05 5:43 ` Paul Rubin
2013-07-10 12:19 ` vincent.diemunsch
2013-07-10 16:02 ` Simon Wright
2013-07-11 0:36 ` Randy Brukardt
2013-07-11 6:19 ` Simon Wright
2013-07-11 23:11 ` Randy Brukardt
2013-07-11 10:10 ` vincent.diemunsch
2013-07-11 14:23 ` Dmitry A. Kazakov
2013-07-12 0:07 ` Randy Brukardt
2013-07-12 0:00 ` Randy Brukardt
2013-07-12 7:25 ` Simon Wright
2013-07-12 20:07 ` Randy Brukardt
2013-07-12 14:23 ` Robert A Duff
2013-07-12 20:14 ` Randy Brukardt
2013-07-11 23:50 ` Shark8
2013-07-08 23:18 ` Peter C. Chapin
2013-07-09 7:34 ` Stefan.Lucks
2013-07-09 15:21 ` Adam Beneschan
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox