RE: Procedure types

From: Campbell, Robert D (UK Edinburgh) <"Campbell,>
Date: Thu, 18 Nov 2004 18:10:56 +0000

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


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

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFxwYXINCj4+ICBSb2JlcnQsXHBhcg0KPj4gIFRo
YW5rcyBmb3IgeW91ciBub3RlLiBCdXQgc29tZW9uZSBwbGVhc2UgaGVscCBtZSB1bmRlcnN0YW5k
IHRoaXMuXHBhcg0KPj4gIEkgcHJvcG9zZWQgLi4uXHBhcg0KXHBhcg0KPj4gIFN0YW5ccGFyDQpc
cGFyDQpJIGRpZG4ndCBxdWl0ZSB1bmRlcnN0YW5kIHlvdXIgcXVlc3Rpb246IGFyZSB5b3UgYXNr
aW5nIG1lIHRvIGV4cGxhaW4gdGhlXHBhcg0KYWR2YW50YWdlcyBvZiBQcm9jZWR1cmUgdHlwZXMs
IG9yIG9mIG9iamVjdHM/IEkgdGhpbmsgeW91IGFyZSBhc2tpbmcgdGhlXHBhcg0KZm9ybWVyLlxw
YXINClxwYXINCk15IHBvc2l0aW9uIGlzIHRoYXQgSSB0aGluayB0aGV5IGJvdGggaGF2ZSBhZHZh
bnRhZ2VzLCBhbmQgc28gc2hvdWxkXHBhcg0KYm90aCBiZSBhdmFpbGFibGUuIElmIG9ubHkgb25l
IHdhcyBhbGxvd2VkIEkgd291bGQgZGVmaW5hdGVseSBnbyB0aGVccGFyDQpvLW8gd2F5OyBpdCBp
cyBtdWNoIG1vcmUgcG93ZXJmdWwuXHBhcg0KXHBhcg0KU28sIHNvbWUgYWR2YW50YWdlcyBvZiBw
cm9jZWR1cmUgdHlwZXMsIGFuIHVuYmFsYW5jZWQgYXNzZXNzbWVudDpccGFyDQpccGFyDQoxIC0g
TWFueSBleGlzdGluZyBmdW5jdGlvbnMgKGVnIE1hdGguQ29zKSBhcmUgcHJvY2VkdXJlcy4gSWYg
SSB3YW50IHRvXHBhcg0KbnVtZXJpY2FsbHkgaW50ZWdyYXRlIGl0IGluIGFuIG8tbyBpbnRlZ3Jh
dG9yIChsaWtlIG1pbmUgaXMgaW4gZmFjdCEpXHBhcg0KSSB3b3VsZCBuZWVkIHRvIGNyZWF0ZSBh
IHdyYXBwZXIgb2JqZWN0LlxwYXINClxwYXINCjIgLSBQZW9wbGUgd2l0aCBhIHNjaWVudGlmaWMg
YmFja2dyb3VuZCBncmV3IHVwIHdpdGggRk9SVFJBTiwgYW5kXHBhcg0KYXJlIGZhbWlsaWFyIHdp
dGggdGhpcyB0eXBlIG9mIGRlY2xhcmF0aW9uLlxwYXINClxwYXINCjMgLSAgVGhlIGV4dHJhIGNh
cGFiaWxpdGllcyBvZiBvYmplY3RzIHNlZW0gdW5uZWNlc3NhcnkgZm9yIENvcywgdGhlXHBhcg0K
YWJvdmUgZGVzaWduIGRvZXMgYWxsIHRoYXQgaXMgd2FudGVkIG9mIGEgQ29zIGZ1bmN0aW9uLlxw
YXINClxwYXINCjQgLSBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGUgKHRha2VuIGZyb20g
TGliUmVhbHMpOlxwYXINClxwYXINClBST0NFRFVSRSBDdWJlKiAoeCA6IFJFQUwpIDogUkVBTDtc
cGFyDQogIEJFR0lOXHBhcg0KICAgIFJFVFVSTiAgeCAqIHggKiB4XHBhcg0KICBFTkQgIEN1YmU7
XHBhcg0KXHBhcg0KV2hpY2ggY2FuIGJlIGNhbGxlZCBieSBSLkN1YmUgKHgpICAgLSAgSSB1c2Ug
SU1QT1JUIFIgOj0gTGliUmVhbHM7XHBhcg0KXHBhcg0KXHBhcg0KVGhlIG8tbyBhcHByb2FjaCBy
ZXF1aXJlczpccGFyDQpccGFyDQpUWVBFXHBhcg0KICBNb25hZGljRm4qID0gUE9JTlRFUiBUTyBB
QlNUUkFDVCBSRUNPUkQgRU5EO1xwYXINClxwYXINCiAgQ3ViZSogICAgICA9IFBPSU5URVIgVE8g
UkVDT1JEIChNb25hZGljRm4pIEVORDtccGFyDQpccGFyDQpQUk9DRURVUkUgKGZuIDogTW9uYWRp
Y0ZuKSBFdmFsKiAoeCA6IFJFQUwpIDogUkVBTCwgTkVXLCBBQlNUUkFDVDtccGFyDQpccGFyDQpQ
Uk9DRURVUkUgIChmbiA6IEN1YmUpIEV2YWwqICh4IDogUkVBTCkgOiBSRUFMO1xwYXINCiAgQkVH
SU5ccGFyDQogICAgUkVUVVJOICB4ICogeCAqIHhccGFyDQogIEVORCAgRXZhbDtccGFyDQpccGFy
DQpccGFyDQpXaGljaCBjYW4gYmUgY2FsbGVkIGJ5XHBhcg0KXHBhcg0KVkFSXHBhcg0KICBjdWJl
IDogUi5DdWJlO1xwYXINCkJFR0lOXHBhcg0KICBORVcgKGN1YmUpOyBjdWJlLkV2YWwgKHgpLlxw
YXINClxwYXINClRoYXQncyB3aHkgSSBzYXkgdGhlIGZvcm1lciBpcyBzaW1wbGVyLlxwYXINClxw
YXINCihUaGUgTW9kdWxlIGludGVyZmFjZSBpcyBhbHNvIHNob3J0ZXIgYW5kIHNpbXBsZXIuKVxw
YXINClxwYXINCjUgLSBFZmZpY2llbmN5LiBNZXRob2RzIHJlcXVpcmUgYW4gZXh0cmEgbGV2ZWwg
b2YgaW5kaXJlY3Rpb24uIEluc2lkZVxwYXINCmEgYmlnIGVuZ2luZWVyaW5nIHN1bSB0aGlzIGp1
c3Qgc2VlbXMgbGlrZSB1bm5lY2Vzc2FyeSBvdmVyaGVhZC5ccGFyDQpccGFyDQo2IC0gQnJldml0
eS4gR2VuZXJhbGx5IHByb2NlZHVyZSBuYW1lcyBhcmUgc2hvcnRlci4gSSB1c2UgTSBmb3IgTWF0
aCwgUiBmb3JccGFyDQpMaWJSZWFscywgQyBmb3IgTGliQ29tcGxleCwgSSBmb3IgTGliSW50ZWdl
cnMuIEJlY2F1c2UgdGhlcmUgYXJlIG9ubHkgYSBmZXdccGFyDQptdWNoIHVzZWQgbW9kdWxlcyB0
aGF0IHByb3ZpZGUgOTklIG9mIHRoZSBmdW5jdGlvbnMgKGJ5IHVzZSwgaWYgbm90IGJ5IG51bWJl
cilccGFyDQp0aGlzIGJyZXZpdHkgaXMgbm90IGNvbmZ1c2luZyAodG8gbWUpLlxwYXINCkNvbXBs
aWNhdGVkIGV4cHJlc3Npb25zIHdpdGggNCBvciA1IG9yIG1vcmUgZnVuY3Rpb25zIG9uIDEgbGlu
ZSBhcmVccGFyDQpjb21tb24uIFNob3J0IG5hbWVzIGZvciBjb21tb24gZnVuY3Rpb25zIGFyZSBh
IHNpZ25pZmljYW50IGFkdmFudGFnZSB0b1xwYXINCnJlYWRhYmlsaXR5IGFuZCBjb21wcmVoZW5z
aWJpbGl0eS4gVGhlIC5FdmFsIGluIGN1YmUuRXZhbFxwYXINCmp1c3Qgc2VlbXMgdG8gdmlzdWFs
bHkgY2x1dHRlciBtYXRocyBleHByZXNzaW9ucy5ccGFyDQpccGFyDQo3IC0gSWYgSSBzZWxlY3Qg
Ui5DdWJlLCByaWdodCBjbGljaywgSSBnZXQgaW1tZWRpYXRlIGFjY2VzcyB0byB0aGUgaW50ZXJm
YWNlLFxwYXINCnNvdXJjZSwgYW5kIERvY3UuIFRoaXMgaXMgdmVyeSBuaWNlLiBJdCBkb2VzIG5v
dCB3b3JrIGlmIEkgc2VsZWN0IGN1YmUuRXZhbC5ccGFyDQpJIGNhbid0IGVhc2lseSB3b3JrIG91
dCB3aGVyZSBjdWJlLkV2YWwgaXMgZGVmaW5lZC4gV2hvIG9uIEVhcnRoIG5lZWRzXHBhcg0KcG9s
eW1vcnBoaXNtIGZvciBhIEN1YmUgZnVuY3Rpb24/XHBhcg0KXHBhcg0KXHBhcg0KSSBjb3VsZCBw
cm9iYWJseSBnbyBvbiAuLi5ccGFyDQpccGFyDQpHaXZlbiB0aGF0IHByb2NlZHVyZXMgYXJlIHVz
ZWZ1bCBob3cgY2FuIEkgcGFzcyB0aGVtIHRvIG90aGVyIHRoaW5nc1xwYXINCndpdGggaGF2aW5n
IHByb2NlZHVyZSB2YWx1ZWQgdmFyaWFibGVzLCBhbmQgdGh1cyBwcm9jZWR1cmUgdHlwZXM/XHBh
cg0KXHBhcg0KXHBhcg0KVGhpcyBkb2VzIG5vdCBzZWVrIHRvIGJlIGEgYmFsYW5jZWQgZW1haWw7
IEkgY291bGQgYWxzbyB3cml0ZSBhIHByby1ccGFyDQpvYmplY3RzIGxpc3QuIEJ1dCBvbmUgYWR2
YW50YWdlIEkgY2FuJ3QgcmVzaXN0IG1lbnRpb25pbmcgaXMgdGhhdFxwYXINCkkgY2FuJ3Qgc2F2
ZSBwcm9jZWR1cmUgdmFyaWFibGVzIHRvIGRpc2MsIHdoZXJlYXMgaWYgTW9uYWRpY0ZuIGhhZFxw
YXINCmJlZW4gZGVjbGFyZWQgYXMgYSBTdG9yZSBJIGNvdWxkIEV4dGVybmFsaXNlIGN1YmUuIFF1
ZXN0aW9uOiBkb2VzXHBhcg0KY3JlYXRpbmcgYSBTdG9yZSBleHRlbnNpb24gaGF2ZSBhIHNpZ25p
ZmljYW50IG92ZXJoZWFkIGluc2lkZSBhXHBhcg0KYmlnIGxvb3A/XHBhcg0KXHBhcg0KR29vZCBu
aWdodFxwYXINClJvYmVydFxwYXINClxwYXINCioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHBhcg0KVGhpcyBlbWFpbCBh
bmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgdG8gdGhlIGludGVuZGVkXHBhcg0K
cmVjaXBpZW50IGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUg
aW50ZW5kZWRccGFyDQpyZWNpcGllbnQgcGxlYXNlIGRlbGV0ZSBpdCBmcm9tIHlvdXIgc3lzdGVt
IGFuZCBub3RpZnkgdGhlIHNlbmRlci5ccGFyDQpZb3Ugc2hvdWxkIG5vdCBjb3B5IGl0IG9yIHVz
ZSBpdCBmb3IgYW55IHB1cnBvc2Ugbm9yIGRpc2Nsb3NlIG9yXHBhcg0KZGlzdHJpYnV0ZSBpdHMg
Y29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbi5ccGFyDQoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxwYXINCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KXHBhcg0KVG8gdW5z
dWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmlu
ZyB0aGUgd29yZCAidW5zdWJzY3JpYmUiIHRvOlxwYXINCiAgIGJsYWNrYm94LXJlcXVlc3RAb2Jl
cm9uLmNoXHBhcg0KXHBhcg0KVG8gZ2V0IGEgbGlzdCBvZiB2YWxpZCBlLW1haWwgY29tbWFuZHMg
YW5kIGluc3RydWN0aW9ucyBvbiB0aGVpciB1c2FnZSwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmlu
ZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFib3ZlIGFkZHJlc3MuXHBhcg0KXHBhcg0KU2VuZCBh
bnkgcHJvYmxlbSByZXBvcnRzIG9yIHF1ZXN0aW9ucyByZWxhdGVkIHRvIHRoaXMgZW1haWwgbGlz
dCB0byB0aGUgbGlzdCBvd25lciBhdFxwYXINCiAgIG93bmVyLWJsYWNrYm94QG9iZXJvbi5jaFxw
YXINClxwYXINCkN1cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0KXHBhcg0KYSkgVG8gcG9zdCB5
b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhZGRyZXNzIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJl
ZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdpbGwgcmVj
b2duaXplIHlvdSBhcyBzdWJzY3JpYmVyIGFuZCBmb3J3YXJkIHlvdXIgcG9zdGluZyBpbW1lZGlh
dGVseSwgd2l0aG91dCBjcmVhdGluZyBhbnkgb3ZlcmhlYWQuXHBhcg0KXHBhcg0KYikgSWYsIGZv
ciBzb21lIHJlYXNvbiwgeW91IGNhbm5vdCBwb3N0IGZyb20gdGhlIGFkZHJlc3MsIGJ5IHdoaWNo
IHlvdSBhcmUgc3Vic2NyaWJlZCwgeW91ciBtZXNzYWdlIHdpbGwgYmUgbW9kZXJhdGVkIHRvIGF2
b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9mdGVuIGNh
dXNlIHNvbWUgZGVsYXksIGluIHBhcnRpY3VsYXIgb3ZlciB3ZWVrZW5kcyBvciBob2x5ZGF5c319
AE1ERiBW


----boundary-LibPST-iamunique-1811568918_-_---
Received on Thu Nov 18 2004 - 19:10:56 UTC

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