On Fri, 31 Mar 2017, at 05:19 PM, Michael Jones wrote: > There is part of the topic that has always been slightly beyond my > grasp. (Maybe I do understand...but just lack absolute certainty.) > Maybe others know the answer... >
> In a template system (which is what I prefer but that's not the point > of this email) we have the notion of the TYPE(s) being a formal > argument. We presume that the code will compile or fail based on the > suitability of the instantiated type. That is, a templated Min would > fail on the comparison "<" if the TYPE was "Map[something]something." > Call that a lexical fail. > > My question is, what about a semantic fail. Say, "<" for floating > point. In the sort package the Less function does > !Less(a,b)&&!Less(b,a) to figure out Equal(a,b). That works for ints > and strings, but when I templated sort I found that it failed in tests > with float32 and float64 because of NaN values, which are > !Less(a,b)&&!Less(b,a) yet !Equal(a,b). I had to make two templates, > one for floating point values and one for integral/string values. Is this because sort.Less requires total ordering and, because of NaN, < for floats only offers partial ordering? Ian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.