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=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.13.218.66 with SMTP id c63mr12023882ywe.144.1485333532889; Wed, 25 Jan 2017 00:38:52 -0800 (PST) X-Received: by 10.157.56.117 with SMTP id r50mr3218559otd.12.1485333532851; Wed, 25 Jan 2017 00:38:52 -0800 (PST) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!1.eu.feeder.erje.net!feeder.erje.net!2.us.feeder.erje.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!nntp.giganews.com!q58no49892qte.0!news-out.google.com!15ni2102itm.0!nntp.google.com!r185no73826ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 25 Jan 2017 00:38:52 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=85.167.215.164; posting-account=bPTmZAoAAAC_6HP9XLKB9aAAxBa6BuOR NNTP-Posting-Host: 85.167.215.164 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <65f79e53-a468-4b77-8ee1-440c26a09371@googlegroups.com> Subject: Question on type invariants From: reinkor Injection-Date: Wed, 25 Jan 2017 08:38:52 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Xref: news.eternal-september.org comp.lang.ada:33154 Date: 2017-01-25T00:38:52-08:00 List-Id: This question may be a bit imprecise: Assume a complex object A (for example a set of records stored in a Contain= er or file). Let S (for example an array of records) represent a summary of= A (derived=20 from A). I want to update S (call "Update_S") in an economical way. S may not be upd= ated immediately each time A changes. And I would prefer not to update too = much when S is up-to-date anyway (i.e. avoid redundant updating). I also wa= nt to keep things simple and avoid to combine updating S in any smart way w= hen I change A (I may not have full control over the modifications of A any= way). The main thing is that S in "fresh"/updated when I use it (not necess= ary when A changes). In principle I could mark A and S with a "last-modified-time-flag" so I can= update S when I find it necessary. This has similarities to unix "make". B= ad idea? I can program the whole thing and keep the concepts in my head, but is it a= natural "Ada way" to secure that S is up-to-date when used? Is "type invar= iants" of any help? reinert