Don't worry, I still got the point :) And already yielded that treating pseudo-interfaces as types won't work and that it requires some polish on phrasing :)
On Tue, Sep 11, 2018 at 1:16 AM Jonathan Amsterdam <jbamster...@gmail.com> wrote: > I'm wrong about `==` here, because it's defined for interface values. > `comparable` could be an interface. > > But it won't work for other operators like `<` or `+`. > > On Sunday, September 9, 2018 at 2:49:26 PM UTC-4, Jonathan Amsterdam wrote: >> >> FWIW, in my pseudo-interface description >>> <https://blog.merovius.de/2018/09/05/scrapping_contracts.html> ... >>> >> >> You mention that comparable is a pseudo-interface, which means the type >> supports the == and != operators. You say that comparable and the other >> pseudo-interfaces are types. >> >> So I should be able to write a function like >> >> func f(x, y comparable) bool { return x == y } >> >> And of course I can call it like so: >> >> var x int >> var y float32 >> f(x, y) >> >> The problem is that this program seems to type-check, but it is invalid. >> The == operator is specified to work on operands of the same type, and it >> is being used on operands of different types. >> >> This is the fundamental problem with using interfaces for operators. >> >> And since we need some operators for generics (at least == and <), it is >> also one of the fundamental problems with unifying interfaces and contracts. >> > -- > 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. > -- 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.