RE: Named Integers

From: Hof, Philipp <"Hof,>
Date: Mon, 22 Nov 2004 15:49:58 +1300

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

Hi Stan

Sorry for the confusion. I should have explained myself better.
I have to admit further that I don't see the difference to C style enums
clearly.

Problem 1:

TYPE
  Colour1* = (blue, red);
  Colour2 = (red, blue);

Above we have two times 'red' and 'blue' with different values assigned. If
expanded it would result in:

CONST
  red = 0;
  red* = 1;
  blue* = 0;
  blue = 1;

and wouldn't compile.

To solve this problem they would need to be put in there own namespace.
An adapted C# (Java 1.5.0) style notation would probably look like:
* within a module: Colour1.blue;
* outside a module: Module.Colour1.blue


Problem 2:

Let's assume an application has been produced and deployed:
TYPE
  Colour* = (blue, red);
(* red = 2 *)

and years later changed to:

TYPE
   Colour* = (blue, orange, red);
(* red = 3 *)

The problem here is that 'red' changed in the production code to 3. If other
modules depend on it they would need to be re-compiled. (A CONST red = 2; is
unlikely to be changed by accident.)
Serialization of data and networking would add further to the above problem.
(transmitting a '3' instead of a '2' and producing a car in the wrong colour
:-)

A compiler could issue a warning if a value had changed position.

********************************

Offsets in enums are a very useful in low-level programming:

TYPE
  Flags = {rx: 2, overflow, frameError, tx: 12, reserved: 13..31};
(* Flags is of type SET, rx is the 3rd bit in Flags etc. so the same
as CONST rx = 2; reserved is a SET itself an therefore a problem... *)
 
Maybe a better notation:
TYPE
  Flags = {rx: 2, overflow, frameError, tx: 12}: SET;
  Int = {zero, one, three := 3}: INTEGER;

...

IF Flags.overflow IN Flags THEN...

********************************

Another form of notation could be (C bit struct):

TYPE
  Cpu = RECORD [SET]
    flagA: 0; (* Should it be an integer or a SET? *)
    flagB: 1;
    unused: 2..30; (* problem: What type? SET? See below *)
    flagC: 31;
  END;

Current implementation:
If [INTEGER] IN [SET] THEN
Additionally required:
IF [SET] IN [SET] THEN (* would work *)

Well, I guess I should stop here :-)

Cheers,
Philipp


-----Original Message-----
From: Stan Warford [mailto:Stan.Warford{([at]})nowhere.xy
Sent: Monday, 22 November 2004 11:01 a.m.
To: Hof, Philipp
Cc: 'blackbox{([at]})nowhere.xy
Subject: Re: Named Integers

On Nov 21, 2004, at 12:51 PM, Hof, Philipp wrote:

>> now, what possible problems could they cause?
>
> Just some hurry thoughts:
>
> *******************************************
>
> Problem 1:
>
> TYPE
> Colour* = (red := 3, blue, green);
> CarColour* = (blue, yellow, orange);
>

> If I understand the idea right this would be identical to:
>
> CONST
> ...
> blue* = 4;
> blue* = 1;

I see little use for this complicating feature and
would not allow it. All named integers would
start at 0, and increase sequentially by 1.

> *******************************************
>
> Problem 2:
>
> TYPE
> Colour* = (red = 3, blue, green);
> (* green = 5 *)
>
> changes to:
>
> TYPE
> Colour* = (red = 3, blue, lightBlue, green);
> (* green = 6 *)
>
> -> Causes a problem to existing (compiled) modules using 'Colour'
>
> *******************************************

Same comment applies. Do not supply that
feature. There are many instances where
named integers would be a big improvement,
and only relatively few that would benefit
from relaxing the restriction that they all
start at 0 and increment by 1.

Keep it simple.

Stan

J. Stanley Warford
Professor of Computer Science
Pepperdine University
Malibu, CA 90263
Stan.Warford{([at]})nowhere.xy
310-506-4332
--------------------------------------------

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-1689799210_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEhpIFN0YW5ccGFyDQpccGFyDQpTb3JyeSBmb3Ig
dGhlIGNvbmZ1c2lvbi4gSSBzaG91bGQgaGF2ZSBleHBsYWluZWQgbXlzZWxmIGJldHRlci5ccGFy
DQpJIGhhdmUgdG8gYWRtaXQgZnVydGhlciB0aGF0IEkgZG9uJ3Qgc2VlIHRoZSBkaWZmZXJlbmNl
IHRvIEMgc3R5bGUgZW51bXNccGFyDQpjbGVhcmx5LlxwYXINClxwYXINClByb2JsZW0gMTpccGFy
DQpccGFyDQpUWVBFXHBhcg0KICBDb2xvdXIxKiA9IChibHVlLCByZWQpO1xwYXINCiAgQ29sb3Vy
MiA9IChyZWQsIGJsdWUpO1xwYXINClxwYXINCkFib3ZlIHdlIGhhdmUgdHdvIHRpbWVzICdyZWQn
IGFuZCAnYmx1ZScgd2l0aCBkaWZmZXJlbnQgdmFsdWVzIGFzc2lnbmVkLiBJZlxwYXINCmV4cGFu
ZGVkIGl0IHdvdWxkIHJlc3VsdCBpbjpccGFyDQpccGFyDQpDT05TVFxwYXINCiAgcmVkID0gMDtc
cGFyDQogIHJlZCogPSAxO1xwYXINCiAgYmx1ZSogPSAwOyBccGFyDQogIGJsdWUgPSAxO1xwYXIN
ClxwYXINCmFuZCB3b3VsZG4ndCBjb21waWxlLiBccGFyDQpccGFyDQpUbyBzb2x2ZSB0aGlzIHBy
b2JsZW0gdGhleSB3b3VsZCBuZWVkIHRvIGJlIHB1dCBpbiB0aGVyZSBvd24gbmFtZXNwYWNlLlxw
YXINCkFuIGFkYXB0ZWQgQyMgKEphdmEgMS41LjApIHN0eWxlIG5vdGF0aW9uIHdvdWxkIHByb2Jh
Ymx5IGxvb2sgbGlrZTpccGFyDQoqIHdpdGhpbiBhIG1vZHVsZTogQ29sb3VyMS5ibHVlO1xwYXIN
Ciogb3V0c2lkZSBhIG1vZHVsZTogTW9kdWxlLkNvbG91cjEuYmx1ZVxwYXINClxwYXINClxwYXIN
ClByb2JsZW0gMjpccGFyDQpccGFyDQpMZXQncyBhc3N1bWUgYW4gYXBwbGljYXRpb24gaGFzIGJl
ZW4gcHJvZHVjZWQgYW5kIGRlcGxveWVkOlxwYXINClRZUEVccGFyDQogIENvbG91ciogPSAoYmx1
ZSwgcmVkKTtccGFyDQooKiByZWQgPSAyICopXHBhcg0KXHBhcg0KYW5kIHllYXJzIGxhdGVyIGNo
YW5nZWQgdG86XHBhcg0KXHBhcg0KVFlQRVxwYXINCiAgIENvbG91ciogPSAoYmx1ZSwgb3Jhbmdl
LCByZWQpO1xwYXINCigqIHJlZCA9IDMgKilccGFyDQpccGFyDQpUaGUgcHJvYmxlbSBoZXJlIGlz
IHRoYXQgJ3JlZCcgY2hhbmdlZCBpbiB0aGUgcHJvZHVjdGlvbiBjb2RlIHRvIDMuIElmIG90aGVy
XHBhcg0KbW9kdWxlcyBkZXBlbmQgb24gaXQgdGhleSB3b3VsZCBuZWVkIHRvIGJlIHJlLWNvbXBp
bGVkLiAoQSBDT05TVCByZWQgPSAyOyBpc1xwYXINCnVubGlrZWx5IHRvIGJlIGNoYW5nZWQgYnkg
YWNjaWRlbnQuKVxwYXINClNlcmlhbGl6YXRpb24gb2YgZGF0YSBhbmQgbmV0d29ya2luZyB3b3Vs
ZCBhZGQgZnVydGhlciB0byB0aGUgYWJvdmUgcHJvYmxlbS5ccGFyDQoodHJhbnNtaXR0aW5nIGEg
JzMnIGluc3RlYWQgb2YgYSAnMicgYW5kIHByb2R1Y2luZyBhIGNhciBpbiB0aGUgd3JvbmcgY29s
b3VyXHBhcg0KOi0pXHBhcg0KXHBhcg0KQSBjb21waWxlciBjb3VsZCBpc3N1ZSBhIHdhcm5pbmcg
aWYgYSB2YWx1ZSBoYWQgY2hhbmdlZCBwb3NpdGlvbi5ccGFyDQpccGFyDQoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKlxwYXINClxwYXINCk9mZnNldHMgaW4gZW51bXMgYXJlIGEgdmVy
eSB1c2VmdWwgaW4gbG93LWxldmVsIHByb2dyYW1taW5nOlxwYXINClxwYXINClRZUEVccGFyDQog
IEZsYWdzID0gXHtyeDogMiwgb3ZlcmZsb3csIGZyYW1lRXJyb3IsIHR4OiAxMiwgcmVzZXJ2ZWQ6
IDEzLi4zMVx9O1xwYXINCigqIEZsYWdzIGlzIG9mIHR5cGUgU0VULCByeCBpcyB0aGUgM3JkIGJp
dCBpbiBGbGFncyBldGMuIHNvIHRoZSBzYW1lXHBhcg0KYXMgQ09OU1QgcnggPSAyOyByZXNlcnZl
ZCBpcyBhIFNFVCBpdHNlbGYgYW4gdGhlcmVmb3JlIGEgcHJvYmxlbS4uLiAqKVxwYXINCiBccGFy
DQpNYXliZSBhIGJldHRlciBub3RhdGlvbjpccGFyDQpUWVBFXHBhcg0KICBGbGFncyA9IFx7cng6
IDIsIG92ZXJmbG93LCBmcmFtZUVycm9yLCB0eDogMTJcfTogU0VUO1xwYXINCiAgSW50ID0gXHt6
ZXJvLCBvbmUsIHRocmVlIDo9IDNcfTogSU5URUdFUjtccGFyDQpccGFyDQouLi5ccGFyDQpccGFy
DQpJRiBGbGFncy5vdmVyZmxvdyBJTiBGbGFncyBUSEVOLi4uXHBhcg0KXHBhcg0KKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKipccGFyDQpccGFyDQpBbm90aGVyIGZvcm0gb2Ygbm90YXRp
b24gY291bGQgYmUgKEMgYml0IHN0cnVjdCk6XHBhcg0KXHBhcg0KVFlQRVxwYXINCiAgQ3B1ID0g
UkVDT1JEIFtTRVRdXHBhcg0KICAgIGZsYWdBOiAwOyAoKiBTaG91bGQgaXQgYmUgYW4gaW50ZWdl
ciBvciBhIFNFVD8gKilccGFyDQogICAgZmxhZ0I6IDE7XHBhcg0KICAgIHVudXNlZDogMi4uMzA7
ICgqIHByb2JsZW06IFdoYXQgdHlwZT8gU0VUPyBTZWUgYmVsb3cgKilccGFyDQogICAgZmxhZ0M6
IDMxO1xwYXINCiAgRU5EO1xwYXINClxwYXINCkN1cnJlbnQgaW1wbGVtZW50YXRpb246XHBhcg0K
SWYgW0lOVEVHRVJdIElOIFtTRVRdIFRIRU5ccGFyDQpBZGRpdGlvbmFsbHkgcmVxdWlyZWQ6XHBh
cg0KSUYgW1NFVF0gSU4gW1NFVF0gVEhFTiAoKiB3b3VsZCB3b3JrICopXHBhcg0KXHBhcg0KV2Vs
bCwgSSBndWVzcyBJIHNob3VsZCBzdG9wIGhlcmUgOi0pXHBhcg0KXHBhcg0KQ2hlZXJzLFxwYXIN
ClBoaWxpcHBccGFyDQpccGFyDQpccGFyDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLVxwYXIN
CkZyb206IFN0YW4gV2FyZm9yZCBbbWFpbHRvOlN0YW4uV2FyZm9yZEBwZXBwZXJkaW5lLmVkdV0g
XHBhcg0KU2VudDogTW9uZGF5LCAyMiBOb3ZlbWJlciAyMDA0IDExOjAxIGEubS5ccGFyDQpUbzog
SG9mLCBQaGlsaXBwXHBhcg0KQ2M6ICdibGFja2JveEBvYmVyb24uY2gnXHBhcg0KU3ViamVjdDog
UmU6IE5hbWVkIEludGVnZXJzXHBhcg0KXHBhcg0KT24gTm92IDIxLCAyMDA0LCBhdCAxMjo1MSBQ
TSwgSG9mLCBQaGlsaXBwIHdyb3RlOlxwYXINClxwYXINCj4+IG5vdywgd2hhdCBwb3NzaWJsZSBw
cm9ibGVtcyBjb3VsZCB0aGV5IGNhdXNlP1xwYXINCj5ccGFyDQo+IEp1c3Qgc29tZSBodXJyeSB0
aG91Z2h0czpccGFyDQo+XHBhcg0KPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqXHBhcg0KPlxwYXINCj4gUHJvYmxlbSAxOlxwYXINCj5ccGFyDQo+IFRZUEVccGFy
DQo+ICAgQ29sb3VyKiA9IChyZWQgOj0gMywgYmx1ZSwgZ3JlZW4pO1xwYXINCj4gICBDYXJDb2xv
dXIqID0gKGJsdWUsIHllbGxvdywgb3JhbmdlKTtccGFyDQo+XHBhcg0KPiBJZiBJIHVuZGVyc3Rh
bmQgdGhlIGlkZWEgcmlnaHQgdGhpcyB3b3VsZCBiZSBpZGVudGljYWwgdG86XHBhcg0KPlxwYXIN
Cj4gQ09OU1RccGFyDQo+ICAgLi4uXHBhcg0KPiAgIGJsdWUqID0gNDtccGFyDQo+ICAgYmx1ZSog
PSAxO1xwYXINClxwYXINCkkgc2VlIGxpdHRsZSB1c2UgZm9yIHRoaXMgY29tcGxpY2F0aW5nIGZl
YXR1cmUgYW5kXHBhcg0Kd291bGQgbm90IGFsbG93IGl0LiBBbGwgbmFtZWQgaW50ZWdlcnMgd291
bGRccGFyDQpzdGFydCBhdCAwLCBhbmQgaW5jcmVhc2Ugc2VxdWVudGlhbGx5IGJ5IDEuXHBhcg0K
XHBhcg0KPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHBhcg0K
PlxwYXINCj4gUHJvYmxlbSAyOlxwYXINCj5ccGFyDQo+IFRZUEVccGFyDQo+ICAgQ29sb3VyKiA9
IChyZWQgPSAzLCBibHVlLCBncmVlbik7XHBhcg0KPiAoKiBncmVlbiA9IDUgKilccGFyDQo+XHBh
cg0KPiBjaGFuZ2VzIHRvOlxwYXINCj5ccGFyDQo+IFRZUEVccGFyDQo+ICAgQ29sb3VyKiA9IChy
ZWQgPSAzLCBibHVlLCBsaWdodEJsdWUsIGdyZWVuKTtccGFyDQo+ICgqIGdyZWVuID0gNiAqKVxw
YXINCj5ccGFyDQo+IC0+IENhdXNlcyBhIHByb2JsZW0gdG8gZXhpc3RpbmcgKGNvbXBpbGVkKSBt
b2R1bGVzIHVzaW5nICdDb2xvdXInXHBhcg0KPlxwYXINCj4gKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKlxwYXINClxwYXINClNhbWUgY29tbWVudCBhcHBsaWVzLiBE
byBub3Qgc3VwcGx5IHRoYXRccGFyDQpmZWF0dXJlLiBUaGVyZSBhcmUgbWFueSBpbnN0YW5jZXMg
d2hlcmVccGFyDQpuYW1lZCBpbnRlZ2VycyB3b3VsZCBiZSBhIGJpZyBpbXByb3ZlbWVudCxccGFy
DQphbmQgb25seSByZWxhdGl2ZWx5IGZldyB0aGF0IHdvdWxkIGJlbmVmaXRccGFyDQpmcm9tIHJl
bGF4aW5nIHRoZSByZXN0cmljdGlvbiB0aGF0IHRoZXkgYWxsXHBhcg0Kc3RhcnQgYXQgMCBhbmQg
aW5jcmVtZW50IGJ5IDEuXHBhcg0KXHBhcg0KS2VlcCBpdCBzaW1wbGUuXHBhcg0KXHBhcg0KU3Rh
blxwYXINClxwYXINCkouIFN0YW5sZXkgV2FyZm9yZFxwYXINClByb2Zlc3NvciBvZiBDb21wdXRl
ciBTY2llbmNlXHBhcg0KUGVwcGVyZGluZSBVbml2ZXJzaXR5XHBhcg0KTWFsaWJ1LCBDQSA5MDI2
M1xwYXINClN0YW4uV2FyZm9yZEBwZXBwZXJkaW5lLmVkdVxwYXINCjMxMC01MDYtNDMzMlxwYXIN
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KXHBhcg0K
VG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2UgY29u
dGFpbmluZyB0aGUgd29yZCAidW5zdWJzY3JpYmUiIHRvOlxwYXINCiAgIGJsYWNrYm94LXJlcXVl
c3RAb2Jlcm9uLmNoXHBhcg0KXHBhcg0KVG8gZ2V0IGEgbGlzdCBvZiB2YWxpZCBlLW1haWwgY29t
bWFuZHMgYW5kIGluc3RydWN0aW9ucyBvbiB0aGVpciB1c2FnZSwgc2VuZCBhIG1lc3NhZ2UgY29u
dGFpbmluZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0KXHBhcg0K
U2VuZCBhbnkgcHJvYmxlbSByZXBvcnRzIG9yIHF1ZXN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZW1h
aWwgbGlzdCB0byB0aGUgbGlzdCBvd25lciBhdFxwYXINCiAgIG93bmVyLWJsYWNrYm94QG9iZXJv
bi5jaFxwYXINClxwYXINCkN1cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0KXHBhcg0KYSkgVG8g
cG9zdCB5b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhZGRyZXNzIGJ5IHdoaWNoIHlvdSBhcmUgc3Vi
c2NyaWJlZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdp
bGwgcmVjb2duaXplIHlvdSBhcyBzdWJzY3JpYmVyIGFuZCBmb3J3YXJkIHlvdXIgcG9zdGluZyBp
bW1lZGlhdGVseSwgd2l0aG91dCBjcmVhdGluZyBhbnkgb3ZlcmhlYWQuXHBhcg0KXHBhcg0KYikg
SWYsIGZvciBzb21lIHJlYXNvbiwgeW91IGNhbm5vdCBwb3N0IGZyb20gdGhlIGFkZHJlc3MsIGJ5
IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUgbW9kZXJhdGVk
IHRvIGF2b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9m
dGVuIGNhdXNlIHNvbWUgZGVsYXksIGluIHBhcnRpY3VsYXIgb3ZlciB3ZWVrZW5kcyBvciBob2x5
ZGF5fX0AIHRvIDMu


----boundary-LibPST-iamunique-1689799210_-_---
Received on Mon Nov 22 2004 - 03:49:58 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:30 UTC