-- Chris Burrows CFB Software Armaide: ARM Oberon-07 Development System for Windows http://www.cfbsoftware.com/armaide ________________________________ From: BlackBox [mailto:BLACKBOX{([at]})nowhere.xyDouglas G. Danforth Sent: Monday, 16 March 2009 2:25 PM To: BLACKBOX{([at]})nowhere.xy Subject: [BLACKBOX] RECORDs and ARRAYs This is a grumble. If you have a good suggestion then I would like to hear it. Why do I have to wrap arrays in records just so I can have methods that operate on the arrays? Why can't I have methods for arrays? Here is what is currently necessary to get a method for an array TYPE Array = POINTER TO ARRAY OF REAL; ArrayRec = POINTER TO RECORD (x: Array) END; PROCEDURE (r: ArrayRec) Norm (): REAL; VAR i: INTEGER; d2, norm: REAL; BEGIN FOR i := 0 TO LEN(r.x)-1 DO d2 := d2 + r.x[i]*r.x[i] END; norm := Math.Sqrt(d2); RETURN norm END Norm; Here is what I would rather like to do PROCEDURE (x: Array) Norm (): REAL; VAR i: INTEGER; d2, norm: REAL; BEGIN FOR i := 0 TO LEN(x)-1 DO d2 := d2 + x[i]*x[i] END; norm := Math.Sqrt(d2); RETURN norm END Norm; So that for VAR r: ArrayRec; x: Array; norm: REAL; One would call norm := x.Norm(); rather than norm := r.Norm(); With array methods the code is more efficient (less dereferencing) and cleaner. Now what does this break? Why wasn't this done? Where is the error in my thoughts? -Doug Danforth ---- To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy---- To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy----boundary-LibPST-iamunique-1057675372_-_- Content-type: application/rtf Content-transfer-encoding: base64 Content-Disposition: attachment; filename="rtf-body.rtf" e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIERvdWcsXHBhcg0KXHBhcg0KTWF5YmUgSSdtIG1p c3Npbmcgc29tZXRoaW5nIGJ1dCB3aHkgZG8geW91IHdhbnQgdG8gdXNlIGEgbWV0aG9kIHRvIHBy b2Nlc3NccGFyDQp0aGUgYXJyYXkgcmF0aGVyIHRoYW4gYSBwcm9jZWR1cmU/IFxwYXINClxwYXIN CldoeSBub3Q6XHBhcg0KXHBhcg0KICBQUk9DRURVUkUgTm9ybSAoSU4geDogQVJSQVkpOiBSRUFM O1xwYXINCiAgICBWQVIgaTogSU5URUdFUjsgZDIsIG5vcm06IFJFQUw7XHBhcg0KICBCRUdJTlxw YXINCiAgICBGT1IgaSA6PSAwIFRPIExFTihyLngpLTEgRE8gZDIgOj0gZDIgKyByLnhbaV0qci54 W2ldIEVORDtccGFyDQogICAgbm9ybSA6PSBNYXRoLlNxcnQoZDIpO1xwYXINCiAgICBSRVRVUk4g bm9ybVxwYXINCiAgRU5EIE5vcm07XHBhcg0KXHRhYiBccGFyDQpTbyB0aGF0IGZvclxwYXINCiAg XHBhcg0KICBWQVJccGFyDQogICAgeDogICBBcnJheTtccGFyDQogICAgbm9ybTogICBSRUFMO1xw YXINClxwYXINCk9uZSB3b3VsZCBjYWxsXHBhcg0KXHRhYiBccGFyDQogIG5vcm0gOj0gTm9ybSh4 KTtccGFyDQpccGFyDQotLVxwYXINCkNocmlzIEJ1cnJvd3NccGFyDQpDRkIgU29mdHdhcmVccGFy DQpBcm1haWRlOiBBUk0gT2Jlcm9uLTA3IERldmVsb3BtZW50IFN5c3RlbSBmb3IgV2luZG93c1xw YXINCmh0dHA6Ly93d3cuY2Zic29mdHdhcmUuY29tL2FybWFpZGVccGFyDQpccGFyDQpccGFyDQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xwYXINClxwYXINClx0YWIgRnJvbTogQmxh Y2tCb3ggW21haWx0bzpCTEFDS0JPWEBMSVNUUy5PQkVST04uQ0hdIE9uIEJlaGFsZiBPZlxwYXIN CkRvdWdsYXMgRy4gRGFuZm9ydGhccGFyDQpcdGFiIFNlbnQ6IE1vbmRheSwgMTYgTWFyY2ggMjAw OSAyOjI1IFBNXHBhcg0KXHRhYiBUbzogQkxBQ0tCT1hATElTVFMuT0JFUk9OLkNIXHBhcg0KXHRh YiBTdWJqZWN0OiBbQkxBQ0tCT1hdIFJFQ09SRHMgYW5kIEFSUkFZc1xwYXINClx0YWIgXHBhcg0K XHRhYiBccGFyDQpcdGFiIFRoaXMgaXMgYSBncnVtYmxlLlxwYXINClx0YWIgSWYgeW91IGhhdmUg YSBnb29kIHN1Z2dlc3Rpb24gdGhlbiBJIHdvdWxkIGxpa2UgdG8gaGVhciBpdC5ccGFyDQpcdGFi IFxwYXINClx0YWIgV2h5IGRvIEkgaGF2ZSB0byB3cmFwIGFycmF5cyBpbiByZWNvcmRzIGp1c3Qg c28gSSBjYW4gaGF2ZSBtZXRob2RzXHBhcg0KXHRhYiB0aGF0IG9wZXJhdGUgb24gdGhlIGFycmF5 cz8gIFdoeSBjYW4ndCBJIGhhdmUgbWV0aG9kcyBmb3IgYXJyYXlzP1xwYXINClx0YWIgXHBhcg0K XHRhYiBIZXJlIGlzIHdoYXQgaXMgY3VycmVudGx5IG5lY2Vzc2FyeSB0byBnZXQgYSBtZXRob2Qg Zm9yIGFuIGFycmF5XHBhcg0KXHRhYiAgICAgVFlQRVxwYXINClx0YWIgICAgICAgIEFycmF5ID0g UE9JTlRFUiBUTyBBUlJBWSBPRiBSRUFMO1xwYXINClx0YWIgICAgICAgIEFycmF5UmVjID0gUE9J TlRFUiBUTyBSRUNPUkQgKHg6IEFycmF5KSBFTkQ7XHBhcg0KXHRhYiBccGFyDQpcdGFiICAgICBQ Uk9DRURVUkUgKHI6IEFycmF5UmVjKSBOb3JtICgpOiBSRUFMO1xwYXINClx0YWIgICAgICAgIFZB UiBpOiBJTlRFR0VSOyBkMiwgbm9ybTogUkVBTDtccGFyDQpcdGFiICAgICBCRUdJTlxwYXINClx0 YWIgICAgICAgIEZPUiBpIDo9IDAgVE8gTEVOKHIueCktMSBETyBkMiA6PSBkMiArIHIueFtpXSpy LnhbaV0gRU5EO1xwYXINClx0YWIgICAgICAgIG5vcm0gOj0gTWF0aC5TcXJ0KGQyKTtccGFyDQpc dGFiICAgICAgICBSRVRVUk4gbm9ybVxwYXINClx0YWIgICAgIEVORCBOb3JtO1xwYXINClx0YWIg XHBhcg0KXHRhYiBIZXJlIGlzIHdoYXQgSSB3b3VsZCByYXRoZXIgbGlrZSB0byBkb1xwYXINClx0 YWIgXHBhcg0KXHRhYiAgICAgUFJPQ0VEVVJFICh4OiBBcnJheSkgTm9ybSAoKTogUkVBTDtccGFy DQpcdGFiICAgICAgICBWQVIgaTogSU5URUdFUjsgZDIsIG5vcm06IFJFQUw7XHBhcg0KXHRhYiAg ICAgQkVHSU5ccGFyDQpcdGFiICAgICAgICBGT1IgaSA6PSAwIFRPIExFTih4KS0xIERPIGQyIDo9 IGQyICsgeFtpXSp4W2ldIEVORDtccGFyDQpcdGFiICAgICAgICBub3JtIDo9IE1hdGguU3FydChk Mik7XHBhcg0KXHRhYiAgICAgICAgUkVUVVJOIG5vcm1ccGFyDQpcdGFiICAgICBFTkQgTm9ybTtc cGFyDQpcdGFiIFxwYXINClx0YWIgU28gdGhhdCBmb3JccGFyDQpcdGFiICAgICBWQVJccGFyDQpc dGFiICAgICAgICByOiAgIEFycmF5UmVjO1xwYXINClx0YWIgICAgICAgIHg6ICAgQXJyYXk7XHBh cg0KXHRhYiAgICAgICAgbm9ybTogICBSRUFMO1xwYXINClx0YWIgT25lIHdvdWxkIGNhbGxccGFy DQpcdGFiIFxwYXINClx0YWIgICAgIG5vcm0gOj0geC5Ob3JtKCk7XHBhcg0KXHRhYiByYXRoZXIg dGhhblxwYXINClx0YWIgICAgIG5vcm0gOj0gci5Ob3JtKCk7XHBhcg0KXHRhYiBccGFyDQpcdGFi IFdpdGggYXJyYXkgbWV0aG9kcyB0aGUgY29kZSBpcyBtb3JlIGVmZmljaWVudCAobGVzcyBkZXJl ZmVyZW5jaW5nKVxwYXINCmFuZCBjbGVhbmVyLlxwYXINClx0YWIgXHBhcg0KXHRhYiBOb3cgd2hh dCBkb2VzIHRoaXMgYnJlYWs/ICBXaHkgd2Fzbid0IHRoaXMgZG9uZT8gIFdoZXJlIGlzIHRoZSBl cnJvclxwYXINCmluIG15IHRob3VnaHRzP1xwYXINClx0YWIgXHBhcg0KXHRhYiAtRG91ZyBEYW5m b3J0aFxwYXINClx0YWIgXHBhcg0KXHRhYiBccGFyDQpccGFyDQpcdGFiIC0tLS0gVG8gdW5zdWJz Y3JpYmUsIHNlbmQgYSBtZXNzYWdlIHdpdGggYm9keSAiU0lHTk9GRiBCTEFDS0JPWCIgdG9ccGFy DQpMSVNUU0VSVkBMSVNUUy5PQkVST04uQ0hccGFyDQpccGFyDQpccGFyDQotLS0tXHBhcg0KVG8g dW5zdWJzY3JpYmUsIHNlbmQgYSBtZXNzYWdlIHdpdGggYm9keSAiU0lHTk9GRiBCTEFDS0JPWCIg dG8gTElTVFNFUlZATElTVFMuT0JFfX0AZ1hIQmhjZzBLWA== ----boundary-LibPST-iamunique-1057675372_-_---Received on Mon Mar 16 2009 - 05:32:41 UTC
This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:30:49 UTC