Re: Procedure types

From: [at]} <Stan>
Date: Thu, 18 Nov 2004 17:35:45 -0800

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

OK. That answers my question. I see your points about the impact
of complexity on your code. I periodically request "named integers"
for CP, which would give 90% of the benefits of enumerated types
with 10% of the implementation cost. But the complexity of using
integer CONST without "named integers" is not nearly the complexity
you would have to endure without procedure variables.

Thanks,
Stan

On Nov 18, 2004, at 10:10 AM, Campbell, Robert D (UK Edinburgh) wrote:

>>> Robert,
>>> Thanks for your note. But someone please help me understand this.
>>> I proposed ...
>
>>> Stan
>
> I didn't quite understand your question: are you asking me to explain
> the
> advantages of Procedure types, or of objects? I think you are asking
> the
> former.
>
> My position is that I think they both have advantages, and so should
> both be available. If only one was allowed I would definately go the
> o-o way; it is much more powerful.
>
> So, some advantages of procedure types, an unbalanced assessment:
>
> 1 - Many existing functions (eg Math.Cos) are procedures. If I want to
> numerically integrate it in an o-o integrator (like mine is in fact!)
> I would need to create a wrapper object.
>
> 2 - People with a scientific background grew up with FORTRAN, and
> are familiar with this type of declaration.
>
> 3 - The extra capabilities of objects seem unnecessary for Cos, the
> above design does all that is wanted of a Cos function.
>
> 4 - Consider the following example (taken from LibReals):
>
> PROCEDURE Cube* (x : REAL) : REAL;
> BEGIN
> RETURN x * x * x
> END Cube;
>
> Which can be called by R.Cube (x) - I use IMPORT R := LibReals;
>
>
> The o-o approach requires:
>
> TYPE
> MonadicFn* = POINTER TO ABSTRACT RECORD END;
>
> Cube* = POINTER TO RECORD (MonadicFn) END;
>
> PROCEDURE (fn : MonadicFn) Eval* (x : REAL) : REAL, NEW, ABSTRACT;
>
> PROCEDURE (fn : Cube) Eval* (x : REAL) : REAL;
> BEGIN
> RETURN x * x * x
> END Eval;
>
>
> Which can be called by
>
> VAR
> cube : R.Cube;
> BEGIN
> NEW (cube); cube.Eval (x).
>
> That's why I say the former is simpler.
>
> (The Module interface is also shorter and simpler.)
>
> 5 - Efficiency. Methods require an extra level of indirection. Inside
> a big engineering sum this just seems like unnecessary overhead.
>
> 6 - Brevity. Generally procedure names are shorter. I use M for Math,
> R for
> LibReals, C for LibComplex, I for LibIntegers. Because there are only
> a few
> much used modules that provide 99% of the functions (by use, if not by
> number)
> this brevity is not confusing (to me).
> Complicated expressions with 4 or 5 or more functions on 1 line are
> common. Short names for common functions are a significant advantage to
> readability and comprehensibility. The .Eval in cube.Eval
> just seems to visually clutter maths expressions.
>
> 7 - If I select R.Cube, right click, I get immediate access to the
> interface,
> source, and Docu. This is very nice. It does not work if I select
> cube.Eval.
> I can't easily work out where cube.Eval is defined. Who on Earth needs
> polymorphism for a Cube function?
>
>
> I could probably go on ...
>
> Given that procedures are useful how can I pass them to other things
> with having procedure valued variables, and thus procedure types?
>
>
> This does not seek to be a balanced email; I could also write a pro-
> objects list. But one advantage I can't resist mentioning is that
> I can't save procedure variables to disc, whereas if MonadicFn had
> been declared as a Store I could Externalise cube. Question: does
> creating a Store extension have a significant overhead inside a
> big loop?
>
> Good night
> 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-1919479961_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIE9LLiBUaGF0IGFuc3dlcnMgbXkgcXVlc3Rpb24u
IEkgc2VlIHlvdXIgcG9pbnRzIGFib3V0IHRoZSBpbXBhY3RccGFyDQpvZiBjb21wbGV4aXR5IG9u
IHlvdXIgY29kZS4gSSBwZXJpb2RpY2FsbHkgcmVxdWVzdCAibmFtZWQgaW50ZWdlcnMiXHBhcg0K
Zm9yIENQLCB3aGljaCB3b3VsZCBnaXZlIDkwJSBvZiB0aGUgYmVuZWZpdHMgb2YgZW51bWVyYXRl
ZCB0eXBlc1xwYXINCndpdGggMTAlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBjb3N0LiBCdXQgdGhl
IGNvbXBsZXhpdHkgb2YgdXNpbmdccGFyDQppbnRlZ2VyIENPTlNUIHdpdGhvdXQgIm5hbWVkIGlu
dGVnZXJzIiBpcyBub3QgbmVhcmx5IHRoZSBjb21wbGV4aXR5XHBhcg0KeW91IHdvdWxkIGhhdmUg
dG8gZW5kdXJlIHdpdGhvdXQgcHJvY2VkdXJlIHZhcmlhYmxlcy5ccGFyDQpccGFyDQpUaGFua3Ms
XHBhcg0KU3RhblxwYXINClxwYXINCk9uIE5vdiAxOCwgMjAwNCwgYXQgMTA6MTAgQU0sIENhbXBi
ZWxsLCBSb2JlcnQgRCAoVUsgRWRpbmJ1cmdoKSB3cm90ZTpccGFyDQpccGFyDQo+Pj4gIFJvYmVy
dCxccGFyDQo+Pj4gIFRoYW5rcyBmb3IgeW91ciBub3RlLiBCdXQgc29tZW9uZSBwbGVhc2UgaGVs
cCBtZSB1bmRlcnN0YW5kIHRoaXMuXHBhcg0KPj4+ICBJIHByb3Bvc2VkIC4uLlxwYXINCj5ccGFy
DQo+Pj4gIFN0YW5ccGFyDQo+XHBhcg0KPiBJIGRpZG4ndCBxdWl0ZSB1bmRlcnN0YW5kIHlvdXIg
cXVlc3Rpb246IGFyZSB5b3UgYXNraW5nIG1lIHRvIGV4cGxhaW4gXHBhcg0KPiB0aGVccGFyDQo+
IGFkdmFudGFnZXMgb2YgUHJvY2VkdXJlIHR5cGVzLCBvciBvZiBvYmplY3RzPyBJIHRoaW5rIHlv
dSBhcmUgYXNraW5nIFxwYXINCj4gdGhlXHBhcg0KPiBmb3JtZXIuXHBhcg0KPlxwYXINCj4gTXkg
cG9zaXRpb24gaXMgdGhhdCBJIHRoaW5rIHRoZXkgYm90aCBoYXZlIGFkdmFudGFnZXMsIGFuZCBz
byBzaG91bGRccGFyDQo+IGJvdGggYmUgYXZhaWxhYmxlLiBJZiBvbmx5IG9uZSB3YXMgYWxsb3dl
ZCBJIHdvdWxkIGRlZmluYXRlbHkgZ28gdGhlXHBhcg0KPiBvLW8gd2F5OyBpdCBpcyBtdWNoIG1v
cmUgcG93ZXJmdWwuXHBhcg0KPlxwYXINCj4gU28sIHNvbWUgYWR2YW50YWdlcyBvZiBwcm9jZWR1
cmUgdHlwZXMsIGFuIHVuYmFsYW5jZWQgYXNzZXNzbWVudDpccGFyDQo+XHBhcg0KPiAxIC0gTWFu
eSBleGlzdGluZyBmdW5jdGlvbnMgKGVnIE1hdGguQ29zKSBhcmUgcHJvY2VkdXJlcy4gSWYgSSB3
YW50IHRvXHBhcg0KPiBudW1lcmljYWxseSBpbnRlZ3JhdGUgaXQgaW4gYW4gby1vIGludGVncmF0
b3IgKGxpa2UgbWluZSBpcyBpbiBmYWN0ISlccGFyDQo+IEkgd291bGQgbmVlZCB0byBjcmVhdGUg
YSB3cmFwcGVyIG9iamVjdC5ccGFyDQo+XHBhcg0KPiAyIC0gUGVvcGxlIHdpdGggYSBzY2llbnRp
ZmljIGJhY2tncm91bmQgZ3JldyB1cCB3aXRoIEZPUlRSQU4sIGFuZFxwYXINCj4gYXJlIGZhbWls
aWFyIHdpdGggdGhpcyB0eXBlIG9mIGRlY2xhcmF0aW9uLlxwYXINCj5ccGFyDQo+IDMgLSAgVGhl
IGV4dHJhIGNhcGFiaWxpdGllcyBvZiBvYmplY3RzIHNlZW0gdW5uZWNlc3NhcnkgZm9yIENvcywg
dGhlXHBhcg0KPiBhYm92ZSBkZXNpZ24gZG9lcyBhbGwgdGhhdCBpcyB3YW50ZWQgb2YgYSBDb3Mg
ZnVuY3Rpb24uXHBhcg0KPlxwYXINCj4gNCAtIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBs
ZSAodGFrZW4gZnJvbSBMaWJSZWFscyk6XHBhcg0KPlxwYXINCj4gUFJPQ0VEVVJFIEN1YmUqICh4
IDogUkVBTCkgOiBSRUFMO1xwYXINCj4gICBCRUdJTlxwYXINCj4gICAgIFJFVFVSTiAgeCAqIHgg
KiB4XHBhcg0KPiAgIEVORCAgQ3ViZTtccGFyDQo+XHBhcg0KPiBXaGljaCBjYW4gYmUgY2FsbGVk
IGJ5IFIuQ3ViZSAoeCkgICAtICBJIHVzZSBJTVBPUlQgUiA6PSBMaWJSZWFscztccGFyDQo+XHBh
cg0KPlxwYXINCj4gVGhlIG8tbyBhcHByb2FjaCByZXF1aXJlczpccGFyDQo+XHBhcg0KPiBUWVBF
XHBhcg0KPiAgIE1vbmFkaWNGbiogPSBQT0lOVEVSIFRPIEFCU1RSQUNUIFJFQ09SRCBFTkQ7XHBh
cg0KPlxwYXINCj4gICBDdWJlKiAgICAgID0gUE9JTlRFUiBUTyBSRUNPUkQgKE1vbmFkaWNGbikg
RU5EO1xwYXINCj5ccGFyDQo+IFBST0NFRFVSRSAoZm4gOiBNb25hZGljRm4pIEV2YWwqICh4IDog
UkVBTCkgOiBSRUFMLCBORVcsIEFCU1RSQUNUO1xwYXINCj5ccGFyDQo+IFBST0NFRFVSRSAgKGZu
IDogQ3ViZSkgRXZhbCogKHggOiBSRUFMKSA6IFJFQUw7XHBhcg0KPiAgIEJFR0lOXHBhcg0KPiAg
ICAgUkVUVVJOICB4ICogeCAqIHhccGFyDQo+ICAgRU5EICBFdmFsO1xwYXINCj5ccGFyDQo+XHBh
cg0KPiBXaGljaCBjYW4gYmUgY2FsbGVkIGJ5XHBhcg0KPlxwYXINCj4gVkFSXHBhcg0KPiAgIGN1
YmUgOiBSLkN1YmU7XHBhcg0KPiBCRUdJTlxwYXINCj4gICBORVcgKGN1YmUpOyBjdWJlLkV2YWwg
KHgpLlxwYXINCj5ccGFyDQo+IFRoYXQncyB3aHkgSSBzYXkgdGhlIGZvcm1lciBpcyBzaW1wbGVy
LlxwYXINCj5ccGFyDQo+IChUaGUgTW9kdWxlIGludGVyZmFjZSBpcyBhbHNvIHNob3J0ZXIgYW5k
IHNpbXBsZXIuKVxwYXINCj5ccGFyDQo+IDUgLSBFZmZpY2llbmN5LiBNZXRob2RzIHJlcXVpcmUg
YW4gZXh0cmEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24uIEluc2lkZVxwYXINCj4gYSBiaWcgZW5naW5l
ZXJpbmcgc3VtIHRoaXMganVzdCBzZWVtcyBsaWtlIHVubmVjZXNzYXJ5IG92ZXJoZWFkLlxwYXIN
Cj5ccGFyDQo+IDYgLSBCcmV2aXR5LiBHZW5lcmFsbHkgcHJvY2VkdXJlIG5hbWVzIGFyZSBzaG9y
dGVyLiBJIHVzZSBNIGZvciBNYXRoLCBccGFyDQo+IFIgZm9yXHBhcg0KPiBMaWJSZWFscywgQyBm
b3IgTGliQ29tcGxleCwgSSBmb3IgTGliSW50ZWdlcnMuIEJlY2F1c2UgdGhlcmUgYXJlIG9ubHkg
XHBhcg0KPiBhIGZld1xwYXINCj4gbXVjaCB1c2VkIG1vZHVsZXMgdGhhdCBwcm92aWRlIDk5JSBv
ZiB0aGUgZnVuY3Rpb25zIChieSB1c2UsIGlmIG5vdCBieSBccGFyDQo+IG51bWJlcilccGFyDQo+
IHRoaXMgYnJldml0eSBpcyBub3QgY29uZnVzaW5nICh0byBtZSkuXHBhcg0KPiBDb21wbGljYXRl
ZCBleHByZXNzaW9ucyB3aXRoIDQgb3IgNSBvciBtb3JlIGZ1bmN0aW9ucyBvbiAxIGxpbmUgYXJl
XHBhcg0KPiBjb21tb24uIFNob3J0IG5hbWVzIGZvciBjb21tb24gZnVuY3Rpb25zIGFyZSBhIHNp
Z25pZmljYW50IGFkdmFudGFnZSB0b1xwYXINCj4gcmVhZGFiaWxpdHkgYW5kIGNvbXByZWhlbnNp
YmlsaXR5LiBUaGUgLkV2YWwgaW4gY3ViZS5FdmFsXHBhcg0KPiBqdXN0IHNlZW1zIHRvIHZpc3Vh
bGx5IGNsdXR0ZXIgbWF0aHMgZXhwcmVzc2lvbnMuXHBhcg0KPlxwYXINCj4gNyAtIElmIEkgc2Vs
ZWN0IFIuQ3ViZSwgcmlnaHQgY2xpY2ssIEkgZ2V0IGltbWVkaWF0ZSBhY2Nlc3MgdG8gdGhlIFxw
YXINCj4gaW50ZXJmYWNlLFxwYXINCj4gc291cmNlLCBhbmQgRG9jdS4gVGhpcyBpcyB2ZXJ5IG5p
Y2UuIEl0IGRvZXMgbm90IHdvcmsgaWYgSSBzZWxlY3QgXHBhcg0KPiBjdWJlLkV2YWwuXHBhcg0K
PiBJIGNhbid0IGVhc2lseSB3b3JrIG91dCB3aGVyZSBjdWJlLkV2YWwgaXMgZGVmaW5lZC4gV2hv
IG9uIEVhcnRoIG5lZWRzXHBhcg0KPiBwb2x5bW9ycGhpc20gZm9yIGEgQ3ViZSBmdW5jdGlvbj9c
cGFyDQo+XHBhcg0KPlxwYXINCj4gSSBjb3VsZCBwcm9iYWJseSBnbyBvbiAuLi5ccGFyDQo+XHBh
cg0KPiBHaXZlbiB0aGF0IHByb2NlZHVyZXMgYXJlIHVzZWZ1bCBob3cgY2FuIEkgcGFzcyB0aGVt
IHRvIG90aGVyIHRoaW5nc1xwYXINCj4gd2l0aCBoYXZpbmcgcHJvY2VkdXJlIHZhbHVlZCB2YXJp
YWJsZXMsIGFuZCB0aHVzIHByb2NlZHVyZSB0eXBlcz9ccGFyDQo+XHBhcg0KPlxwYXINCj4gVGhp
cyBkb2VzIG5vdCBzZWVrIHRvIGJlIGEgYmFsYW5jZWQgZW1haWw7IEkgY291bGQgYWxzbyB3cml0
ZSBhIHByby1ccGFyDQo+IG9iamVjdHMgbGlzdC4gQnV0IG9uZSBhZHZhbnRhZ2UgSSBjYW4ndCBy
ZXNpc3QgbWVudGlvbmluZyBpcyB0aGF0XHBhcg0KPiBJIGNhbid0IHNhdmUgcHJvY2VkdXJlIHZh
cmlhYmxlcyB0byBkaXNjLCB3aGVyZWFzIGlmIE1vbmFkaWNGbiBoYWRccGFyDQo+IGJlZW4gZGVj
bGFyZWQgYXMgYSBTdG9yZSBJIGNvdWxkIEV4dGVybmFsaXNlIGN1YmUuIFF1ZXN0aW9uOiBkb2Vz
XHBhcg0KPiBjcmVhdGluZyBhIFN0b3JlIGV4dGVuc2lvbiBoYXZlIGEgc2lnbmlmaWNhbnQgb3Zl
cmhlYWQgaW5zaWRlIGFccGFyDQo+IGJpZyBsb29wP1xwYXINCj5ccGFyDQo+IEdvb2QgbmlnaHRc
cGFyDQo+IFJvYmVydFxwYXINCj5ccGFyDQo+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHBhcg0KPiBUaGlzIGVtYWls
IGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCB0byB0aGUgaW50ZW5kZWRccGFy
DQo+IHJlY2lwaWVudCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3Qg
dGhlIGludGVuZGVkXHBhcg0KPiByZWNpcGllbnQgcGxlYXNlIGRlbGV0ZSBpdCBmcm9tIHlvdXIg
c3lzdGVtIGFuZCBub3RpZnkgdGhlIHNlbmRlci5ccGFyDQo+IFlvdSBzaG91bGQgbm90IGNvcHkg
aXQgb3IgdXNlIGl0IGZvciBhbnkgcHVycG9zZSBub3IgZGlzY2xvc2Ugb3JccGFyDQo+IGRpc3Ry
aWJ1dGUgaXRzIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24uXHBhcg0KPiAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KlxwYXINClxwYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
XHBhcg0KXHBhcg0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBh
IG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAidW5zdWJzY3JpYmUiIHRvOlxwYXINCiAgIGJs
YWNrYm94LXJlcXVlc3RAb2Jlcm9uLmNoXHBhcg0KXHBhcg0KVG8gZ2V0IGEgbGlzdCBvZiB2YWxp
ZCBlLW1haWwgY29tbWFuZHMgYW5kIGluc3RydWN0aW9ucyBvbiB0aGVpciB1c2FnZSwgc2VuZCBh
IG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3Mu
XHBhcg0KXHBhcg0KU2VuZCBhbnkgcHJvYmxlbSByZXBvcnRzIG9yIHF1ZXN0aW9ucyByZWxhdGVk
IHRvIHRoaXMgZW1haWwgbGlzdCB0byB0aGUgbGlzdCBvd25lciBhdFxwYXINCiAgIG93bmVyLWJs
YWNrYm94QG9iZXJvbi5jaFxwYXINClxwYXINCkN1cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0K
XHBhcg0KYSkgVG8gcG9zdCB5b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhZGRyZXNzIGJ5IHdoaWNo
IHlvdSBhcmUgc3Vic2NyaWJlZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxp
c3Qgc2VydmVyIHdpbGwgcmVjb2duaXplIHlvdSBhcyBzdWJzY3JpYmVyIGFuZCBmb3J3YXJkIHlv
dXIgcG9zdGluZyBpbW1lZGlhdGVseSwgd2l0aG91dCBjcmVhdGluZyBhbnkgb3ZlcmhlYWQuXHBh
cg0KXHBhcg0KYikgSWYsIGZvciBzb21lIHJlYXNvbiwgeW91IGNhbm5vdCBwb3N0IGZyb20gdGhl
IGFkZHJlc3MsIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwg
YmUgbW9kZXJhdGVkIHRvIGF2b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJh
dGlvbiB3aWxsIG9mdGVuIGNhdXNlIHNvbWUgZGVsYXksIGluIHBhcnRpY3VsYXIgb3ZlciB3ZWVr
ZW5kcyBvciBob2x5ZGF5cy5ccGFyDQp9


----boundary-LibPST-iamunique-1919479961_-_---
Received on Fri Nov 19 2004 - 02:35:45 UTC

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