(unknown charset) Re: Pointer compatibility question

From: (unknown charset) [at]} <Wojtek>
Date: Thu, 19 Jun 2003 22:22:53 -0400 (EDT)

----boundary-LibPST-iamunique-1626452615_-_-
Content-type: text/plain

Gerard:

  thanks a lot. I see what you are saying. The procedure
InsertLast can make an assignment in the procedure body
and return the Node as the VAR parameter, which however
is not assignment compatible with the HistNode which
is the receiving variable. I mean, the assignment
Node := HistNode is ok, but HistNode := Node is not.
The first assignment would happen when the procedure
is called, while the second would happen upon the return,
and the second one would be illegal. (I am sort of making
it up at what point exactly the assignments would be made,
but this is not important.) Now I see the point.

Well, we will have to rethink our design. We wanted to copy
verbatim the list management examples from the Reiser and Wirth
textbook, but our records are extensible while their example
was dealing with a non-extended record. I must say I did
not like their examples up front, because in my mind
passing a pointer as VAR raises a red flag. And rightly so,
as we can now see.

Thanks a lot!

Wojtek Skulski skulski{([at]})nowhere.xy
On Fri, 20 Jun 2003, [iso-8859-1] Gérard Meunier wrote:

> Hello Wojtek,
>
> Extract from CP language reference:
>
> Parameter compatible
> An actual parameter a of type Ta is parameter compatible with a formal
> parameter f of type Tf if
> 1. Tf and Ta are equal types, or
> 2. f is a value parameter and Ta is assignment compatible with Tf, or
> 3. f is an IN or VAR parameter and Tf and Ta are record types and Ta is an
> extension of Tf.
>
> The only rule that matches your case is the first one, because your formal
> parameter is not a value parameter nor a record. What I understand here is
> that you cannot consider you make an assignment, since, with a VAR
> parameter, you can pass values in both directions.
>
> My solution is this one (if somebody has a better one, tell me please):
>
> MODULE WorkTest;
> TYPE
> Node = POINTER TO EXTENSIBLE RECORD
> next: Node;
> END;
>
> HistNode = POINTER TO RECORD (Node)
> hist: INTEGER
> END;
>
> VAR
> anchor: HistNode;
> last: HistNode;
>
> PROCEDURE InsertLast (VAR first:Node; new:Node);
> BEGIN
> END InsertLast;
>
> PROCEDURE AddNew;
> VAR
> n: Node;
> BEGIN
> NEW(anchor);
> NEW(last);
> n := anchor; (* Unless you make anchor a simple Node *)
> InsertLast (n, last);
> anchor := n(HistNode);
> END AddNew;
>
> END WorkTest.
>
> Regards.
>
> Gérard
>
>
>
>

--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.


----boundary-LibPST-iamunique-1626452615_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzc1xmY2hhcnNldDAgQXJpYWw7fQ0Ke1xmMVxmbW9kZXJuIENvdXJpZXIgTmV3O30NCntcZjJc
Zm5pbFxmY2hhcnNldDIgU3ltYm9sO30NCntcZjNcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBO
ZXc7fX0NCntcY29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7
fQ0KXHVjMVxwYXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyMCBHZXJhcmQ6XHBhcg0KXHBhcg0K
ICB0aGFua3MgYSBsb3QuIEkgc2VlIHdoYXQgeW91IGFyZSBzYXlpbmcuIFRoZSBwcm9jZWR1cmVc
cGFyDQpJbnNlcnRMYXN0IGNhbiBtYWtlIGFuIGFzc2lnbm1lbnQgaW4gdGhlIHByb2NlZHVyZSBi
b2R5XHBhcg0KYW5kIHJldHVybiB0aGUgTm9kZSBhcyB0aGUgVkFSIHBhcmFtZXRlciwgd2hpY2gg
aG93ZXZlclxwYXINCmlzIG5vdCBhc3NpZ25tZW50IGNvbXBhdGlibGUgd2l0aCB0aGUgSGlzdE5v
ZGUgd2hpY2hccGFyDQppcyB0aGUgcmVjZWl2aW5nIHZhcmlhYmxlLiBJIG1lYW4sIHRoZSBhc3Np
Z25tZW50XHBhcg0KTm9kZSA6PSBIaXN0Tm9kZSBpcyBvaywgYnV0IEhpc3ROb2RlIDo9IE5vZGUg
aXMgbm90LlxwYXINClRoZSBmaXJzdCBhc3NpZ25tZW50IHdvdWxkIGhhcHBlbiB3aGVuIHRoZSBw
cm9jZWR1cmVccGFyDQppcyBjYWxsZWQsIHdoaWxlIHRoZSBzZWNvbmQgd291bGQgaGFwcGVuIHVw
b24gdGhlIHJldHVybixccGFyDQphbmQgdGhlIHNlY29uZCBvbmUgd291bGQgYmUgaWxsZWdhbC4g
KEkgYW0gc29ydCBvZiBtYWtpbmdccGFyDQppdCB1cCBhdCB3aGF0IHBvaW50IGV4YWN0bHkgdGhl
IGFzc2lnbm1lbnRzIHdvdWxkIGJlIG1hZGUsXHBhcg0KYnV0IHRoaXMgaXMgbm90IGltcG9ydGFu
dC4pIE5vdyBJIHNlZSB0aGUgcG9pbnQuXHBhcg0KXHBhcg0KV2VsbCwgd2Ugd2lsbCBoYXZlIHRv
IHJldGhpbmsgb3VyIGRlc2lnbi4gV2Ugd2FudGVkIHRvIGNvcHlccGFyDQp2ZXJiYXRpbSB0aGUg
bGlzdCBtYW5hZ2VtZW50IGV4YW1wbGVzIGZyb20gdGhlIFJlaXNlciBhbmQgV2lydGhccGFyDQp0
ZXh0Ym9vaywgYnV0IG91ciByZWNvcmRzIGFyZSBleHRlbnNpYmxlIHdoaWxlIHRoZWlyIGV4YW1w
bGVccGFyDQp3YXMgZGVhbGluZyB3aXRoIGEgbm9uLWV4dGVuZGVkIHJlY29yZC4gSSBtdXN0IHNh
eSBJIGRpZFxwYXINCm5vdCBsaWtlIHRoZWlyIGV4YW1wbGVzIHVwIGZyb250LCBiZWNhdXNlIGlu
IG15IG1pbmRccGFyDQpwYXNzaW5nIGEgcG9pbnRlciBhcyBWQVIgcmFpc2VzIGEgcmVkIGZsYWcu
IEFuZCByaWdodGx5IHNvLFxwYXINCmFzIHdlIGNhbiBub3cgc2VlLlxwYXINClxwYXINClRoYW5r
cyBhIGxvdCFccGFyDQpccGFyDQpXb2p0ZWsgU2t1bHNraSBza3Vsc2tpQHBhcy5yb2NoZXN0ZXIu
ZWR1XHBhcg0KT24gRnJpLCAyMCBKdW4gMjAwMywgW2lzby04ODU5LTFdIEdcJ2U5cmFyZCBNZXVu
aWVyIHdyb3RlOlxwYXINClxwYXINCj4gSGVsbG8gV29qdGVrLFxwYXINCj5ccGFyDQo+IEV4dHJh
Y3QgZnJvbSBDUCBsYW5ndWFnZSByZWZlcmVuY2U6XHBhcg0KPlxwYXINCj4gUGFyYW1ldGVyIGNv
bXBhdGlibGVccGFyDQo+IEFuIGFjdHVhbCBwYXJhbWV0ZXIgYSBvZiB0eXBlIFRhIGlzIHBhcmFt
ZXRlciBjb21wYXRpYmxlIHdpdGggYSBmb3JtYWxccGFyDQo+IHBhcmFtZXRlciBmIG9mIHR5cGUg
VGYgaWZccGFyDQo+IDEuICBUZiBhbmQgVGEgYXJlIGVxdWFsIHR5cGVzLCBvclxwYXINCj4gMi4g
IGYgaXMgYSB2YWx1ZSBwYXJhbWV0ZXIgYW5kIFRhIGlzIGFzc2lnbm1lbnQgY29tcGF0aWJsZSB3
aXRoIFRmLCBvclxwYXINCj4gMy4gIGYgaXMgYW4gSU4gb3IgVkFSIHBhcmFtZXRlciBhbmQgVGYg
YW5kIFRhIGFyZSByZWNvcmQgdHlwZXMgYW5kIFRhIGlzIGFuXHBhcg0KPiBleHRlbnNpb24gb2Yg
VGYuXHBhcg0KPlxwYXINCj4gVGhlIG9ubHkgcnVsZSB0aGF0IG1hdGNoZXMgeW91ciBjYXNlIGlz
IHRoZSBmaXJzdCBvbmUsIGJlY2F1c2UgeW91ciBmb3JtYWxccGFyDQo+IHBhcmFtZXRlciBpcyBu
b3QgYSB2YWx1ZSBwYXJhbWV0ZXIgbm9yIGEgcmVjb3JkLiBXaGF0IEkgdW5kZXJzdGFuZCBoZXJl
IGlzXHBhcg0KPiB0aGF0IHlvdSBjYW5ub3QgY29uc2lkZXIgeW91IG1ha2UgYW4gYXNzaWdubWVu
dCwgc2luY2UsIHdpdGggYSBWQVJccGFyDQo+IHBhcmFtZXRlciwgeW91IGNhbiBwYXNzIHZhbHVl
cyBpbiBib3RoIGRpcmVjdGlvbnMuXHBhcg0KPlxwYXINCj4gTXkgc29sdXRpb24gaXMgdGhpcyBv
bmUgKGlmIHNvbWVib2R5IGhhcyBhIGJldHRlciBvbmUsIHRlbGwgbWUgcGxlYXNlKTpccGFyDQo+
XHBhcg0KPiBNT0RVTEUgV29ya1Rlc3Q7XHBhcg0KPiBUWVBFXHBhcg0KPiBOb2RlID0gUE9JTlRF
UiBUTyBFWFRFTlNJQkxFIFJFQ09SRFxwYXINCj4gbmV4dDogTm9kZTtccGFyDQo+IEVORDtccGFy
DQo+XHBhcg0KPiBIaXN0Tm9kZSA9IFBPSU5URVIgVE8gUkVDT1JEIChOb2RlKVxwYXINCj4gaGlz
dDogSU5URUdFUlxwYXINCj4gRU5EO1xwYXINCj5ccGFyDQo+IFZBUlxwYXINCj4gYW5jaG9yOiBI
aXN0Tm9kZTtccGFyDQo+IGxhc3Q6IEhpc3ROb2RlO1xwYXINCj5ccGFyDQo+IFBST0NFRFVSRSBJ
bnNlcnRMYXN0IChWQVIgZmlyc3Q6Tm9kZTsgbmV3Ok5vZGUpO1xwYXINCj4gQkVHSU5ccGFyDQo+
IEVORCBJbnNlcnRMYXN0O1xwYXINCj5ccGFyDQo+IFBST0NFRFVSRSBBZGROZXc7XHBhcg0KPiBW
QVJccGFyDQo+IG46IE5vZGU7XHBhcg0KPiBCRUdJTlxwYXINCj4gTkVXKGFuY2hvcik7XHBhcg0K
PiBORVcobGFzdCk7XHBhcg0KPiBuIDo9IGFuY2hvcjsgKCogVW5sZXNzIHlvdSBtYWtlIGFuY2hv
ciBhIHNpbXBsZSBOb2RlICopXHBhcg0KPiBJbnNlcnRMYXN0IChuLCBsYXN0KTtccGFyDQo+IGFu
Y2hvciA6PSBuKEhpc3ROb2RlKTtccGFyDQo+IEVORCBBZGROZXc7XHBhcg0KPlxwYXINCj4gRU5E
IFdvcmtUZXN0LlxwYXINCj5ccGFyDQo+IFJlZ2FyZHMuXHBhcg0KPlxwYXINCj4gR1wnZTlyYXJk
XHBhcg0KPlxwYXINCj5ccGFyDQo+XHBhcg0KPlxwYXINClxwYXINCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KXHBhcg0KVG8gdW5zdWJzY3JpYmUgZnJv
bSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAi
dW5zdWJzY3JpYmUiIHRvOlxwYXINCiAgIGJsYWNrYm94LXJlcXVlc3RAb2Jlcm9uLmNoXHBhcg0K
XHBhcg0KVG8gZ2V0IGEgbGlzdCBvZiB2YWxpZCBlLW1haWwgY29tbWFuZHMgYW5kIGluc3RydWN0
aW9ucyBvbiB0aGVpciB1c2FnZSwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAi
aGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0KXHBhcg0KU2VuZCBhbnkgcHJvYmxlbSBy
ZXBvcnRzIG9yIHF1ZXN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZW1haWwgbGlzdCB0byB0aGUgbGlz
dCBvd25lciBhdFxwYXINCiAgIG93bmVyLWJsYWNrYm94QG9iZXJvbi5jaFxwYXINClxwYXINCkN1
cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0KXHBhcg0KYSkgVG8gcG9zdCB5b3Ugc2hvdWxkIHVz
ZSB0aGUgc2FtZSBhZGRyZXNzIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCB0byB0aGUgbWFp
bGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdpbGwgcmVjb2duaXplIHlvdSBh
cyBzdWJzY3JpYmVyIGFuZCBmb3J3YXJkIHlvdXIgcG9zdGluZyBpbW1lZGlhdGVseSwgd2l0aG91
dCBjcmVhdGluZyBhbnkgb3ZlcmhlYWQuXHBhcg0KXHBhcg0KYikgSWYsIGZvciBzb21lIHJlYXNv
biwgeW91IGNhbm5vdCBwb3N0IGZyb20gdGhlIGFkZHJlc3MsIGJ5IHdoaWNoIHlvdSBhcmUgc3Vi
c2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUgbW9kZXJhdGVkIHRvIGF2b2lkIHNwYW0uIFBs
ZWFzZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9mdGVuIGNhdXNlIHNvbWUgZGVs
YXksIGluIHBhcnRpY3VsYXIgb3ZlciB3ZWVrZW5kcyBvciBob2x5ZGF5cy5ccGFyDQp9


----boundary-LibPST-iamunique-1626452615_-_---
Received on Fri Jun 20 2003 - 04:22:53 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:29:11 UTC