RE: An extended discussion of extensibility

From: Campbell, Robert D (UK Edinburgh) <"Campbell,>
Date: Mon, 11 Oct 2004 13:51:58 +0100

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


>> I guess we agree that - on the pure Component Pascal level

>> - EXTENSIBLE RECORDs are unneccesary. The question was whether

>> EXTENSIBLE procedures are neccessary.
...
>> So with this the argument for EXTENSIBLE procedures vanished and they are

>> a matter of personal style as were EXTENSIBLE RECORDs and Fjodor is right,

>> both might - on the level of Component Pascal at least - be banned.

I think there is a flaw in the above conclusions, resulting from an unstated assumption.

People consider only what is NEEDED for correct function (usually using 'Initialisation'
as an example. There is also the question of what is DESIRABLE for correct function.

I give an example (taken from LibRandom, but there are many others).
This implements an ABSTRACT type meant to represent a mathematical object called
a Random Variate (or RV). These come in various flavours
with names such as 'Normal', 'Exponential', and in millions of
user specific flavours.

They can be (mathematically) described in many different
(but essentially equivalent) ways. Two of the most common
(and useful) are called the 'Pdf' and the 'Cdf'.

The ABSTRACT base type 'Variate' uses the (ABSTRACT) 'Pdf' to compute the 'Cdf'.
When Variate is extended to, for example, Exponential, it is NECESSARY to
implement the ABSTRACT base procedure Pdf, it is NOT NECESSARY to
implement the EXTENSIBLE procedure Cdf.

However, for the Exponential RV, Cdf has a very simple mathematical form and
it is very easy and very desirable (vastly faster, more accurate, simpler)
to reimplement Cdf as well.

On the other hand, for user defined RV's, it may be very difficult, if not impossible,
to reimplement Cdf directly, and depending on the application there may be no desire to
use the Cdf much anyway, so run-time efficiency is secondary to minimising coding effort.

The Component Pascal attribute EXTENSIBLE simply supports this 'optional'
reimplementation; I don't see an equally simple alternative.


Note that the above discussion has not used 'super' calls. Please ban these if you wish.
I, too, prefer 'upcalls' as suggested by Marc to 'super' calls.


Robert

********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
--------------------------------------------

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

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFxwYXINCj4+ICBJIGd1ZXNzIHdlIGFncmVlIHRo
YXQgLSBvbiB0aGUgcHVyZSBDb21wb25lbnQgUGFzY2FsIGxldmVsXHBhcg0KXHBhcg0KPj4gIC0g
RVhURU5TSUJMRSBSRUNPUkRzIGFyZSB1bm5lY2Nlc2FyeS4gVGhlIHF1ZXN0aW9uIHdhcyB3aGV0
aGVyXHBhcg0KXHBhcg0KPj4gIEVYVEVOU0lCTEUgcHJvY2VkdXJlcyBhcmUgbmVjY2Vzc2FyeS5c
cGFyDQouLi5ccGFyDQo+PiAgU28gd2l0aCB0aGlzIHRoZSBhcmd1bWVudCBmb3IgRVhURU5TSUJM
RSBwcm9jZWR1cmVzIHZhbmlzaGVkIGFuZCB0aGV5IGFyZVxwYXINClxwYXINCj4+ICBhIG1hdHRl
ciBvZiBwZXJzb25hbCBzdHlsZSBhcyB3ZXJlIEVYVEVOU0lCTEUgUkVDT1JEcyBhbmQgRmpvZG9y
IGlzIHJpZ2h0LFxwYXINClxwYXINCj4+ICBib3RoIG1pZ2h0IC0gb24gdGhlIGxldmVsIG9mIENv
bXBvbmVudCBQYXNjYWwgYXQgbGVhc3QgLSBiZSBiYW5uZWQuXHBhcg0KXHBhcg0KSSB0aGluayB0
aGVyZSBpcyBhIGZsYXcgaW4gdGhlIGFib3ZlIGNvbmNsdXNpb25zLCByZXN1bHRpbmcgZnJvbSBh
biB1bnN0YXRlZCBhc3N1bXB0aW9uLlxwYXINClxwYXINClBlb3BsZSBjb25zaWRlciBvbmx5IHdo
YXQgaXMgTkVFREVEIGZvciBjb3JyZWN0IGZ1bmN0aW9uICh1c3VhbGx5IHVzaW5nICdJbml0aWFs
aXNhdGlvbidccGFyDQphcyBhbiBleGFtcGxlLiBUaGVyZSBpcyBhbHNvIHRoZSBxdWVzdGlvbiBv
ZiB3aGF0IGlzIERFU0lSQUJMRSBmb3IgY29ycmVjdCBmdW5jdGlvbi5ccGFyDQpccGFyDQpJIGdp
dmUgYW4gZXhhbXBsZSAodGFrZW4gZnJvbSBMaWJSYW5kb20sIGJ1dCB0aGVyZSBhcmUgbWFueSBv
dGhlcnMpLlxwYXINClRoaXMgaW1wbGVtZW50cyBhbiBBQlNUUkFDVCB0eXBlIG1lYW50IHRvIHJl
cHJlc2VudCBhIG1hdGhlbWF0aWNhbCBvYmplY3QgY2FsbGVkXHBhcg0KYSBSYW5kb20gVmFyaWF0
ZSAob3IgUlYpLiBUaGVzZSBjb21lIGluIHZhcmlvdXMgZmxhdm91cnNccGFyDQp3aXRoIG5hbWVz
IHN1Y2ggYXMgJ05vcm1hbCcsICdFeHBvbmVudGlhbCcsIGFuZCBpbiBtaWxsaW9ucyBvZlxwYXIN
CnVzZXIgc3BlY2lmaWMgZmxhdm91cnMuXHBhcg0KXHBhcg0KVGhleSBjYW4gYmUgKG1hdGhlbWF0
aWNhbGx5KSBkZXNjcmliZWQgaW4gbWFueSBkaWZmZXJlbnRccGFyDQooYnV0IGVzc2VudGlhbGx5
IGVxdWl2YWxlbnQpIHdheXMuIFR3byBvZiB0aGUgbW9zdCBjb21tb25ccGFyDQooYW5kIHVzZWZ1
bCkgYXJlIGNhbGxlZCB0aGUgJ1BkZicgYW5kIHRoZSAnQ2RmJy5ccGFyDQpccGFyDQpUaGUgQUJT
VFJBQ1QgYmFzZSB0eXBlICdWYXJpYXRlJyB1c2VzIHRoZSAoQUJTVFJBQ1QpICdQZGYnIHRvIGNv
bXB1dGUgdGhlICdDZGYnLlxwYXINCldoZW4gVmFyaWF0ZSBpcyBleHRlbmRlZCB0bywgZm9yIGV4
YW1wbGUsIEV4cG9uZW50aWFsLCBpdCBpcyBORUNFU1NBUlkgdG9ccGFyDQppbXBsZW1lbnQgdGhl
IEFCU1RSQUNUIGJhc2UgcHJvY2VkdXJlIFBkZiwgaXQgaXMgTk9UIE5FQ0VTU0FSWSB0b1xwYXIN
CmltcGxlbWVudCB0aGUgRVhURU5TSUJMRSBwcm9jZWR1cmUgQ2RmLlxwYXINClxwYXINCkhvd2V2
ZXIsIGZvciB0aGUgRXhwb25lbnRpYWwgUlYsIENkZiBoYXMgYSB2ZXJ5IHNpbXBsZSBtYXRoZW1h
dGljYWwgZm9ybSBhbmRccGFyDQppdCBpcyB2ZXJ5IGVhc3kgYW5kIHZlcnkgZGVzaXJhYmxlICh2
YXN0bHkgZmFzdGVyLCBtb3JlIGFjY3VyYXRlLCBzaW1wbGVyKVxwYXINCnRvIHJlaW1wbGVtZW50
IENkZiBhcyB3ZWxsLlxwYXINClxwYXINCk9uIHRoZSBvdGhlciBoYW5kLCBmb3IgdXNlciBkZWZp
bmVkIFJWJ3MsIGl0IG1heSBiZSB2ZXJ5IGRpZmZpY3VsdCwgaWYgbm90IGltcG9zc2libGUsXHBh
cg0KdG8gcmVpbXBsZW1lbnQgQ2RmIGRpcmVjdGx5LCBhbmQgZGVwZW5kaW5nIG9uIHRoZSBhcHBs
aWNhdGlvbiB0aGVyZSBtYXkgYmUgbm8gZGVzaXJlIHRvXHBhcg0KdXNlIHRoZSBDZGYgbXVjaCBh
bnl3YXksIHNvIHJ1bi10aW1lIGVmZmljaWVuY3kgaXMgc2Vjb25kYXJ5IHRvIG1pbmltaXNpbmcg
Y29kaW5nIGVmZm9ydC5ccGFyDQpccGFyDQpUaGUgQ29tcG9uZW50IFBhc2NhbCBhdHRyaWJ1dGUg
RVhURU5TSUJMRSBzaW1wbHkgc3VwcG9ydHMgdGhpcyAnb3B0aW9uYWwnXHBhcg0KcmVpbXBsZW1l
bnRhdGlvbjsgSSBkb24ndCBzZWUgYW4gZXF1YWxseSBzaW1wbGUgYWx0ZXJuYXRpdmUuXHBhcg0K
XHBhcg0KXHBhcg0KTm90ZSB0aGF0IHRoZSBhYm92ZSBkaXNjdXNzaW9uIGhhcyBub3QgdXNlZCAn
c3VwZXInIGNhbGxzLiBQbGVhc2UgYmFuIHRoZXNlIGlmIHlvdSB3aXNoLlxwYXINCkksIHRvbywg
cHJlZmVyICd1cGNhbGxzJyBhcyBzdWdnZXN0ZWQgYnkgTWFyYyB0byAnc3VwZXInIGNhbGxzLlxw
YXINClxwYXINClxwYXINClJvYmVydFxwYXINClxwYXINCioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHBhcg0KVGhpcyBl
bWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgdG8gdGhlIGludGVuZGVk
XHBhcg0KcmVjaXBpZW50IGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5v
dCB0aGUgaW50ZW5kZWRccGFyDQpyZWNpcGllbnQgcGxlYXNlIGRlbGV0ZSBpdCBmcm9tIHlvdXIg
c3lzdGVtIGFuZCBub3RpZnkgdGhlIHNlbmRlci5ccGFyDQpZb3Ugc2hvdWxkIG5vdCBjb3B5IGl0
IG9yIHVzZSBpdCBmb3IgYW55IHB1cnBvc2Ugbm9yIGRpc2Nsb3NlIG9yXHBhcg0KZGlzdHJpYnV0
ZSBpdHMgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbi5ccGFyDQoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxwYXIN
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KXHBhcg0K
VG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2UgY29u
dGFpbmluZyB0aGUgd29yZCAidW5zdWJzY3JpYmUiIHRvOlxwYXINCiAgIGJsYWNrYm94LXJlcXVl
c3RAb2Jlcm9uLmNoXHBhcg0KXHBhcg0KVG8gZ2V0IGEgbGlzdCBvZiB2YWxpZCBlLW1haWwgY29t
bWFuZHMgYW5kIGluc3RydWN0aW9ucyBvbiB0aGVpciB1c2FnZSwgc2VuZCBhIG1lc3NhZ2UgY29u
dGFpbmluZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0KXHBhcg0K
U2VuZCBhbnkgcHJvYmxlbSByZXBvcnRzIG9yIHF1ZXN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZW1h
aWwgbGlzdCB0byB0aGUgbGlzdCBvd25lciBhdFxwYXINCiAgIG93bmVyLWJsYWNrYm94QG9iZXJv
bi5jaFxwYXINClxwYXINCkN1cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0KXHBhcg0KYSkgVG8g
cG9zdCB5b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhZGRyZXNzIGJ5IHdoaWNoIHlvdSBhcmUgc3Vi
c2NyaWJlZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdp
bGwgcmVjb2duaXplIHlvdSBhcyBzdWJzY3JpYmVyIGFuZCBmb3J3YXJkIHlvdXIgcG9zdGluZyBp
bW1lZGlhdGVseSwgd2l0aG91dCBjcmVhdGluZyBhbnkgb3ZlcmhlYWQuXHBhcg0KXHBhcg0KYikg
SWYsIGZvciBzb21lIHJlYXNvbiwgeW91IGNhbm5vdCBwb3N0IGZyb20gdGhlIGFkZHJlc3MsIGJ5
IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUgbW9kZXJhdGVk
IHRvIGF2b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9m
dGVuIGNhdXNlIHNvbWUgZGVsYXksIGluIHBhcnRpY3VsYXIgb3ZlciB3ZWVrZW5kcyBvciBob2x5
ZGF5cy59fQBlZDog


----boundary-LibPST-iamunique-63908348_-_---
Received on Mon Oct 11 2004 - 14:51:58 UTC

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