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.

Reply via email to