On Wed, Aug 5, 2020 at 8:52 PM Robert Engels <reng...@ix.netcom.com> wrote:
>
> I understand your point, but I think a few minor corrections Make a 
> difference - it does not matter that String supports + and not - , a string 
> would not be a Number. String concatenation is not addition.

My point wasn't that a string is a number.  My point was that the
current design draft permits writing a function that uses + and works
with both strings and numbers.  If we adopt something along the lines
of what you are suggesting, we must either define a name for "types
that support +" or we must say "you can't write a generic function
that uses + and works with both strings and numbers."


> There are also several ways to implement “ordering” with complex numbers, 
> even between complex and rational - it’s all a matter of definition. There is 
> also the possibility to make complex not a Comparable (compile time failure).

In Go, the types complex64 and complex128 do not support the < <= >= >
operators.  That is what I mean when I say that the complex types are
not ordered.  I'm not sure it matters that it is possible to define
some ordering on complex numbers; the point is that the language
defines no such ordering, so if you need to use ordering operators you
can't use complex types.


> You write the generic code using methods not operators in all cases.

Ah, I didn't understand that.  I think that is a non-starter.  I think
it is a requirement that people be able to write (and read) Min as

    if a < b {
        return a
    }
    return b

Saying that you must write this as, e.g.,

    if a.Less(b) {
        return a
    }
    return b

means that the generic language is not the normal language.  That adds
a massive layer of complexity to using generics: you can no longer
write ordinary Go code for generic functions, you have to write in
this alternative language that is harder to write and harder to read.
You also have to remember a bunch of names for the methods that
correspond to the operators.  The design draft works very hard to
avoid these issues.

In particular, I think that making that requirement would be adding
much more complexity to the language than we get by adding type lists.

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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcV5zGzOPZqZjGuTX7y%2BSn3jU-3f%2Buo4-i_0YOwYkuqfHQ%40mail.gmail.com.

Reply via email to