I was being facetious. You have the right to opine, but elevating opinions to that of proofs doesn't give the discussion any utility. I think you should consider the underlying assumptions in some of your points:
1. A slice is a descriptor of an aggregate 2. A struct can resemble a descriptor of an aggregate. 3. A struct can resemble a slice 4. If a slice can be compared as a struct holding a descriptor, then maps can have slices as keys 5. Because it benefits this use case, it is a good feature to add to the language Enumerating the drawbacks of this feature is more useful than trying to justify its existence. The language authors omitted this functionality for a reason. One of the reasons is that arrays and slices are similar, and changing their comparison semantics seemed confusing. On Sunday, July 3, 2016 at 11:32:39 AM UTC-7, Chad wrote: > > Pardon? > > On Sunday, July 3, 2016 at 8:13:30 PM UTC+2, as....@gmail.com wrote: >> >> Hardcoded proofs should be assigned well-named identifiers. If you ever >> have to alter them, you don't want to be rummaging around your lemmas and >> corollaries. >> >> On Sunday, July 3, 2016 at 5:32:26 AM UTC-7, Chad wrote: >>> >>> Ok. That "haha" was merely to show that no animosity was borne. And also >>> because you didn't really answer the question as I asked (by quoting the >>> spec) which I found funny. >>> >>> Alas, I guess we couldn't see eye to eye. >>> >>> But chill a little bit. I have given all the hardcoded proofs and people >>> have just given me *feelings* about what they thought should be right. >>> I think I have the right to disagree. >>> >>> Anyway, I can only wish you good continuation. :) >>> >>> >>> On Sunday, July 3, 2016 at 2:04:47 PM UTC+2, Florin Pățan wrote: >>>> >>>> I'm sorry but your attitude is counterproductive to the discussion. >>>> "haha" what? I told you I see your point, I think I know the specs very >>>> well, thank you for the link. >>>> However, you seem incapable of accepting, despite an number of others >>>> saying the contrary, despite, given a reasonable example where even the >>>> standard library gets this "wrong" (according to you, according to me it's >>>> exactly as it should be). >>>> You've been explained several times that both point of views hold valid >>>> arguments so why do you insist your point of view is the only correct one >>>> and everyone else is wrong? >>>> The authors of the language which have far more experience that me (I >>>> can't speak for your experience or others), couldn't get to an agreement >>>> on >>>> how this should work so they took the best decision, let the user deal >>>> with >>>> this according to their individual needs. >>>> I'll stop following this thread / replying as it's pointless to do so >>>> at this point. >>>> Good luck proving everyone else is wrong and you know better. >>>> >>>> On Sunday, July 3, 2016 at 12:47:12 PM UTC+1, Chad wrote: >>>>> >>>>> Ok, Let me help you out haha :) >>>>> >>>>> Here is the definition of a slice. It is not a container. >>>>> https://golang.org/ref/spec#Slice_types >>>>> >>>>> I am not inventing things. >>>>> >>>>> I know what people on this thread said, but that's their misconception. >>>>> >>>>> On Sunday, July 3, 2016 at 1:40:46 PM UTC+2, Florin Pățan wrote: >>>>>> >>>>>> As you pointed out, Printf() should follow the ref spec but that >>>>>> doesn't happen because some humans don't perceive this accuracy as >>>>>> necessary or maybe because the way to resonate about slices / arrays is >>>>>> as >>>>>> containers for the actual values. >>>>>> Thus we have Printf working as it does (and %p will indeed print the >>>>>> memory address of the slice type). >>>>>> >>>>>> I would definitely want to be able to compare []int{1, 2, 3} with >>>>>> ([]int{1, 2, 3, 4, 5})[:3] and result in equality (given here for >>>>>> example >>>>>> purposes but think of them as coming from different sources) >>>>>> Apparently you don't, and that's fine. >>>>>> >>>>>> That's exactly why the compiler only allows comparison with nil, to >>>>>> force the user to think about that should be compared, not do it by >>>>>> default >>>>>> and have potential hidden issues that might be uncovered too late in the >>>>>> process. >>>>>> >>>>>> On Sunday, July 3, 2016 at 12:20:17 PM UTC+1, Chad wrote: >>>>>>> >>>>>>> In fact, that is somewhat my fault. >>>>>>> >>>>>>> I should ask: >>>>>>> >>>>>>> What is a slice? >>>>>>> What is an array? >>>>>>> >>>>>>> Spoiler: a slice is a reference type in its "wikipedia-ish" >>>>>>> definition (auto-dereferencing) which is the reason you observe such a >>>>>>> result in the playground. >>>>>>> >>>>>>> On Sunday, July 3, 2016 at 1:12:17 PM UTC+2, Chad wrote: >>>>>>>> >>>>>>>> No. You should not get it from here. You should get the answer from >>>>>>>> the spec. Let alone the fact that the implementation should ideally >>>>>>>> follow >>>>>>>> the spec and not the reverse. >>>>>>>> >>>>>>>> On Sunday, July 3, 2016 at 1:03:44 PM UTC+2, Florin Pățan wrote: >>>>>>>>> >>>>>>>>> If I look at what %v means, print out the values of various types >>>>>>>>> in Go, according to https://golang.org/pkg/fmt/ then I believe >>>>>>>>> that this holds the answer: https://play.golang.org/p/GiLckoBDxa >>>>>>>>> >>>>>>>>> On Sunday, July 3, 2016 at 11:33:01 AM UTC+1, Chad wrote: >>>>>>>>>> >>>>>>>>>> Not for comparison. >>>>>>>>>> >>>>>>>>>> I am just asking what is the value of a slice and what is the >>>>>>>>>> value of an array. >>>>>>>>>> >>>>>>>>>> Remember that there is no slice comparison that has been spec'ed >>>>>>>>>> so far. >>>>>>>>>> >>>>>>>>>> On Sunday, July 3, 2016 at 12:24:05 PM UTC+2, Florin Pățan wrote: >>>>>>>>>>> >>>>>>>>>>> For []T the value of a slice for the purpose of comparison would >>>>>>>>>>> be each individual value compared against each-other (ofc maybe >>>>>>>>>>> comparing >>>>>>>>>>> the length first as an optimization). >>>>>>>>>>> Same goes for an array. >>>>>>>>>>> >>>>>>>>>>> And again, you are missing the whole point. Both me and you are >>>>>>>>>>> wrong in each-others points of view. >>>>>>>>>>> Just accept this. >>>>>>>>>>> >>>>>>>>>>> On Sunday, July 3, 2016 at 11:19:48 AM UTC+1, Chad wrote: >>>>>>>>>>>> >>>>>>>>>>>> What's the value of a slice? >>>>>>>>>>>> >>>>>>>>>>>> What's the value of an array? >>>>>>>>>>>> >>>>>>>>>>>> On Sunday, July 3, 2016 at 12:05:38 PM UTC+2, Florin Pățan >>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> If the type is *[]T then comparing memory addresses make sense >>>>>>>>>>>>> to see if both terms point to the same memory address. >>>>>>>>>>>>> If the type is []T then comparing memory addresses doesn't >>>>>>>>>>>>> make sense as I'd expect to compare values. >>>>>>>>>>>>> Finally, if the type is []*T then I'd still expect to compare >>>>>>>>>>>>> values (even if this is inconsistent with the above two rules), >>>>>>>>>>>>> mainly >>>>>>>>>>>>> because I'm usually interested in the values a slice holds. >>>>>>>>>>>>> >>>>>>>>>>>>> And that's exactly why Ian and others said this is complicated >>>>>>>>>>>>> to define as different users expect different outcomes. >>>>>>>>>>>>> So rather than deal with this, in an auto-magic way, better >>>>>>>>>>>>> let the users deal with it as they see fit from case to case. >>>>>>>>>>>>> >>>>>>>>>>>>> On Sunday, July 3, 2016 at 10:53:39 AM UTC+1, Chad wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Which is why it should be formalized. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Where is the inconsistency between slices and arrays? >>>>>>>>>>>>>> Why do people even think that a slice need to behave like an >>>>>>>>>>>>>> array wrt equality, were it introduced? >>>>>>>>>>>>>> >>>>>>>>>>>>>> A slice is not an array! >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Sunday, July 3, 2016 at 11:36:44 AM UTC+2, >>>>>>>>>>>>>> as....@gmail.com wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Relaxing unformalized behavior makes little sense to me. >>>>>>>>>>>>>>> Explaining why equality is inconsistent between slices and >>>>>>>>>>>>>>> arrays is not >>>>>>>>>>>>>>> something I want to do either. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Sunday, July 3, 2016 at 1:40:19 AM UTC-7, Chad wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Rob and Robert actually wrote that this area of the spec >>>>>>>>>>>>>>>> needs more work... >>>>>>>>>>>>>>>> Otherwise, the behaviour of maps, slices and funcs cannot >>>>>>>>>>>>>>>> be fully explained. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Sunday, July 3, 2016 at 7:25:31 AM UTC+2, >>>>>>>>>>>>>>>> as....@gmail.com wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Go does not have reference types. As far as I know, the >>>>>>>>>>>>>>>>> word was purposefully removed from the spec to remove the >>>>>>>>>>>>>>>>> ambiguity >>>>>>>>>>>>>>>>> surrounding the word. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> https://groups.google.com/forum/m/#!topic/golang-dev/926npffb6lA >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> @Martin >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> As I've mentioned earlier, one ought to be careful about >>>>>>>>>>>>>>>> false friends from other languages. >>>>>>>>>>>>>>>> I am not sure I understand what you mean by: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> if the name field is changed after the call >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- 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.