From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Ada vs Eiffel - Ada programmer approach
Date: Mon, 08 Jun 2009 15:37:15 -0400
Date: 2009-06-08T15:37:15-04:00 [thread overview]
Message-ID: <wccvdn6a55g.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 878wk299uj.fsf@willow.rfc1149.net
Samuel Tardieu <sam@rfc1149.net> writes:
>>>>>> "Robert" == Robert A Duff <bobduff@shell01.TheWorld.com> writes:
>
> Robert> Newer versions of GNAT have pragmas Precondition and
> Robert> Postcondition. We're thinking about adding pragma Invariant.
>
> Where would pragma Invariant be declared? At the type/object level or at
> the subprogram level?
An invariant (whether it be a pragma, or some special syntax) would be
attached to a type, and would mean "all objects of this type have
this property, always" (except that maybe objects can temporarily
violate their invariant, so long as the code puts it back).
A related concept that has been discussed is "user-defined constraints".
I'm not sure what the difference is, exactly -- I think with user-defined
constraints, you can't "temporarily violate".
I have expressed the opinion that invariants and/or user-defined
constraints should apply to subtypes, not just types. Not everyone
agrees.
And if they apply to subtypes, it's a small step to let them apply to
standalone objects ("this object (almost) always has so-and-so
property").
Package invariants have also been discussed.
- Bob
next prev parent reply other threads:[~2009-06-08 19:37 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-24 8:39 Ada vs Eiffel - Ada programmer approach Tomek Walkuski
2009-05-24 11:49 ` anon
2009-05-24 12:26 ` Georg Bauhaus
2009-05-24 12:17 ` Georg Bauhaus
2009-05-24 16:31 ` Pascal Obry
2009-05-25 16:32 ` Rugxulo
2009-05-26 13:37 ` Ludovic Brenta
2009-05-26 14:51 ` Dmitry A. Kazakov
2009-05-26 17:26 ` Georg Bauhaus
2009-05-26 17:39 ` Dmitry A. Kazakov
2009-05-26 17:59 ` Georg Bauhaus
2009-05-26 19:52 ` Dmitry A. Kazakov
2009-05-26 20:14 ` Pascal Obry
2009-05-26 20:25 ` Pascal Obry
2009-05-26 21:28 ` Dmitry A. Kazakov
2009-05-26 18:23 ` Jeffrey R. Carter
2009-05-26 15:07 ` Tim Rowe
2009-05-26 16:37 ` Georg Bauhaus
2009-05-28 8:37 ` Nicholas Paul Collin Gloucester
2009-06-01 16:22 ` Tim Rowe
2009-06-04 7:35 ` Hibou57 (Yannick Duchêne)
2009-06-04 9:46 ` Martin
2009-06-04 12:16 ` Hibou57 (Yannick Duchêne)
2009-06-04 9:56 ` Jean-Pierre Rosen
2009-06-16 6:58 ` ardjussi
2009-06-16 17:22 ` Jeffrey R. Carter
2009-05-26 18:21 ` Jeffrey R. Carter
2009-05-26 18:35 ` Dmitry A. Kazakov
2009-06-04 7:39 ` Hibou57 (Yannick Duchêne)
2009-06-04 9:02 ` Ludovic Brenta
2009-06-04 9:19 ` Dmitry A. Kazakov
2009-06-04 12:14 ` Hibou57 (Yannick Duchêne)
2009-06-04 14:14 ` Dmitry A. Kazakov
2009-06-04 16:45 ` Jeffrey R. Carter
2009-06-04 7:30 ` Hibou57 (Yannick Duchêne)
2009-06-04 7:55 ` Ludovic Brenta
2009-06-04 8:45 ` Georg Bauhaus
2009-06-04 9:03 ` Ludovic Brenta
2009-06-04 13:25 ` Robert A Duff
2009-06-04 13:39 ` Martin
2009-06-04 13:08 ` stefan-lucks
2009-06-08 12:41 ` Samuel Tardieu
2009-06-08 19:37 ` Robert A Duff [this message]
2009-06-08 22:52 ` Randy Brukardt
2009-06-09 7:39 ` Dmitry A. Kazakov
2009-06-10 6:55 ` Hibou57 (Yannick Duchêne)
2009-06-10 6:58 ` Hibou57 (Yannick Duchêne)
2009-06-10 11:10 ` Georg Bauhaus
2009-06-04 7:04 ` Hibou57 (Yannick Duchêne)
2009-06-04 6:04 ` Hibou57 (Yannick Duchêne)
2009-06-06 14:27 ` Marco
2009-06-06 15:37 ` Tomek Wałkuski
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox