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.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,c9d5fc258548b22a X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII Path: g2news2.google.com!postnews.google.com!z31g2000vbs.googlegroups.com!not-for-mail From: Maciej Sobczak Newsgroups: comp.lang.ada Subject: Re: How do I write directly to a memory address? Date: Tue, 8 Feb 2011 13:48:29 -0800 (PST) Organization: http://groups.google.com Message-ID: References: <67063a5b-f588-45ea-bf22-ca4ba0196ee6@l11g2000yqb.googlegroups.com> <31c357bd-c8dc-4583-a454-86d9c579e5f4@m13g2000yqb.googlegroups.com> <05a3673e-fb97-449c-94ed-1139eb085c32@x1g2000yqb.googlegroups.com> <8r86vgFc3uU1@mid.individual.net> <19fh1chm74f9.11cws0j5bckze.dlg@40tude.net> <5d9bd120-4953-4fb1-a890-27267245e954@8g2000prt.googlegroups.com> <544076dc-3357-4d8d-bfeb-7ae46a88b931@w19g2000yqa.googlegroups.com> <9bt91saw1vao$.9o7azvb4ina6$.dlg@40tude.net> <1aragtrfhwg4w$.1c1eyyf8254pw$.dlg@40tude.net> NNTP-Posting-Host: 85.2.159.71 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1297201709 8048 127.0.0.1 (8 Feb 2011 21:48:29 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 8 Feb 2011 21:48:29 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: z31g2000vbs.googlegroups.com; posting-host=85.2.159.71; posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10,gzip(gfe) Xref: g2news2.google.com comp.lang.ada:18022 Date: 2011-02-08T13:48:29-08:00 List-Id: On Feb 8, 7:14=A0pm, "Dmitry A. Kazakov" wrote: > > q.e.d. what? > > 1. const T /=3D T > 2. not (const T <: T) That's of course very interesting, but does not relate to the example that we are discussing. > > Why do you want to substitute one type by another? > > Because one is passed as a parameter where another is declared, expected > and used. This is substitution. No. According to the C standard (6.5.2.2/4) this is *assignment*. In Ada assignment looks like this: declare J : constant Integer :=3D 7; I : Integer; begin I :=3D J; -- here -- and later, for example: I :=3D I + 1; end; There is no substitution in the above code, at least as far as my definitions go. This is assignment. And since the C standard says black on white (hint: you cannot argue with what the standard says) that the assignment takes place when parameters are passed to functions, then no substitution takes place there either. And then, no contract is broken. q.e.d. ? -- Maciej Sobczak * http://www.inspirel.com