On Sat, Oct 1, 2016 at 10:56 AM, T L <tapir....@gmail.com> wrote:
>
> On Sunday, October 2, 2016 at 12:38:00 AM UTC+8, Ian Lance Taylor wrote:
>>
>> On Sat, Oct 1, 2016 at 8:55 AM, T L <tapi...@gmail.com> wrote:
>> >
>> > On Saturday, October 1, 2016 at 11:29:35 PM UTC+8, Axel Wagner wrote:
>> >>
>> >> It *is* possible to define two named types with the same name (which
>> >> are
>> >> not identical according to the spec):
>> >> https://play.golang.org/p/PmkcvdNQnx
>> >
>> >
>> > Oh, never know we can define local types!
>> >
>> > But, from my understanding, according to the spec, the two local X types
>> > are
>> > identical.
>> > But the compiler doesn't think so.
>> > A compiler bug?
>>
>> I'm sorry, I don't follow your argument.  The spec says, as you've
>> already quoted, "Two named types are identical if their type names
>> originate in the same TypeSpec."  In the playground example above, the
>> two types named "X" do not originate in the same TypeSpec, so they are
>> not identical.
>
> Then could you provide an example two identical custom named types originate
> in the same TypeSpec?

I don't know what it means to have two identical custom named types.
When type T1 and type T2 are identical, they are the same type.  When
they are identical named types, they have the same name, so we are
talking about types T and T.  The question is: when is type T
identical to type T?  The answer is: when both instances of T
originate in the same TypeSpec.  And that answer makes sense, because
as we saw above it is entirely possible to have two types named T that
do not originate in the same TypeSpec, and those types are not
identical.

I know this conversation has had some discussion of the alias types
"byte" and "rune".  The spec defines those types as aliases.  It is
not the case that there is a type "byte" that is identical to the type
"uint8".  Instead, the name "byte" is an alias for the type "uint8".

It's also worth considering this in connection with proposal #16339,
which introduces user-defined aliases, including type aliases.

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.

Reply via email to