Re: Include file such as 'compare.e' or 'find.e'
- Posted by CChris <christian.cuvier at agricult??e.gouv.fr> Aug 07, 2007
- 582 views
Juergen Luethje wrote: > > CChris wrote: > > > Juergen Luethje wrote: > > > > > > Derek Parnell wrote: > > > > > > > Salix wrote: > > > > > > > > > > CChris wrote: > > > > > > > > > > > > As for the min/max names, they were seen by some as ambiguous. The > > > > > > current > > > names</font></i> > > > > > > are more precise; they may be a problem to tose whose mastery of > > > > > > english > > is</font></i> > > > > > > minimal. > > > > > > > > > > I don't get this. Why is it ambiguous? Why is not it precise? > > > > > > > > 'greatest' implies that there might be any number of things to test. > > > > 'greater' implies that there are only two things to test. > > > > > > > > Thus ... > > > > > > > > function greatest( SEQUENCE ) > > > > > > > > and > > > > > > > > function greater (OBJECT, OBJECT) > > > > > > > > But as you say, it is a subtle distinction that only some English > > > > speakers > might</font></i> > > > > pick up on. > > > > > > > > So if we are going to have one signature of 'sequence' and another of > > > > 'object, > > > > object', how should we name the functions (consistently) to give the > > > > reader > > > > a mnemonic to tell them apart from each other? > > > > > > > > I don't have an answer to that one yet. > > > > > > How about > > > - find_min(SEQUENCE) > > > - find_max(SEQUENCE) > > > - min(SEQUENCE) > > > - max(SEQUENCE) > > > - lesser(OBJECT, OBJECT) > > > - greater(OBJECT, OBJECT) > > > > > > I think this wouldn't cause confusion. > > > > > > Regards, > > > Juergen > > > > That would be better than the current naming scheme. > > Note however that compile.e, like any language I know, defines min()/max() > > as > > the two object thing. > > We already have had that discussion ... And that doesn't change how widespread the min(a,b) construction is. You simply cannot change that. > A function that returns the minimum of 2 objects is not necessary at all, > because it's just a special case. The genaral case is a function that > returns the minimum of a list of objects. This is -- of course! -- the way > 'min' is used e.g. on mathworld.wolfram.com. Also, e.g. statistical > sofware packages such as SPSS do not have a function > minimum(object1, object2) at all. While min({a,b}) is obviously equivalent to min(a,b), it is certainly a less efficient implementation, because you must create a useless pair to conform to the signature. Did you ever consider that a for loop was equivalent to a special form of while loop? You must be for the removal of "for" from the language, if you are serious. > If such a function should be introduced > in Euphoria for convenience, then it certainly should _not_ get the general > name. The general name is to be used for the general function. Disagree. The general name should be for the most widely used routine, which I believe is the special case here. This wouldn't hold in every case of course. > > > In maths, you can overload min(); in Eu, you unfortunately > > cannot. > > And of course adding the bounds() parametrised function as well. > > You still did not tell why it would be an advantage to have that function. > > Regards, > Juergen I did: * Because you need the {index, value} or {value,index} pair for "global" use, as an argument to printf() or as a subsequence to concatenate or patch somewhere. Discarding the value on return only to retrieve later is wasteful. * Because according to the context, you may have to dynamically choose whether you need a min or a max, an index or a value, and using routine_id() to make that choice is clumsier and slower - you must look up the routine names - than a parametrised routine. These two are good enough imho. CChris