On Friday 08 July 2005 12:39, Tom Verhoeff wrote: > On Thu, Jul 07, 2005 at 07:47:03AM +0000, Vinzent Hoefler wrote: > > operators. So especially with the "added" overflow check I think, > > Inc and Dec are pretty useless functions, because the don't do > > anything you can't accomplish by using "+" or "-" unless you have > > very_long_and_complex_variable_names and want to save some typing > > work. > > You suggest that it saves only typing,
No, I just tried to ignore that point and hoped nobody would notice. :) > but it also simplifies > optimization in cases where the variable is compositite, because the > address needs to be calculated only once. Yes, but in the same way it endorses using functions with side-effects. Consider |Int_Ptr^ := Int_Ptr^ + 1; vs. |Inc (Int_Ptr^); where Int_Ptr is a function returning a pointer to a different Integer each time it is called. > E.g. in one piece of code, > I have a 13-dimensional array of integers, and I do > > Inc ( A[e1, e2, ..., e13] ) > > I don't know if modern compilers will properly optimize > > A[e1, e2, ..., e13] := Succ ( A[e1, e2, ..., e13] ) They should, unless the index expressions are functions - which may have side-effects. See above. > In fact, it would be nice to have a Self for arrays as well (as for > objects), where you could write > > with A[e1, e2, ..., e13] do > Self := Succ ( Self ) It could be more generic, if you'd allow renaming declaration like Ada does: declare X : Integer renames A(e1, e2, ..., e13); begin X := X + 1; end; Well, the problem with possible side-effects would remain then. Perhaps we should introduce the notion of a pure function (like in VHDL) to give the compiler a hint that it doesn't need to recalculate all that stuff. Vinzent. -- public key: http://www.t-domaingrabbing.ch/publickey.asc
pgpMSJLwHG0Le.pgp
Description: signature
_______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
