On Sat, Jun 3, 2023 at 1:40 PM peterGo <go.peter...@gmail.com> wrote:
> > Kamil Ziemian, > > // list of prime numbers > primes := []int{2, 3, 5, 7, 9, 2147483647} > > The variable prime is a list of some prime numbers starting with the > lowest and ending with the highest prime numbers that can safely be > represented an int. An int may either 32 or 64 bits. > > Please explain the joke. > Could it be that 9 is not prime? > > > Note: “Explaining a joke is like dissecting a frog. You understand it > better but the frog dies in the process.” > ― E.B. White > > peter > On Saturday, June 3, 2023 at 3:13:28 PM UTC-4 Kamil Ziemian wrote: > >> Is this example found in the "Composite literals" section of Go Spec a >> joke? >> // list of prime numbers >> primes := []int{2, 3, 5, 7, 9, 2147483647 <(214)%20748-3647>} >> >> I checked on the internet and 2147483647 <(214)%20748-3647> is a prime >> number (https://en.wikipedia.org/wiki/2,147,483,647), so this element is >> fine. >> >> Best regards >> Kamil >> >> czwartek, 4 maja 2023 o 16:38:50 UTC+2 Kamil Ziemian napisał(a): >> >>> You convince me to your point Axel Wagner. At the same time if we look >>> at examples in Go Spec, I think their can be improved. >>> "A0, A1, and []string >>> A2 and struct{ a, b int } >>> A3 and int A4, func(int, float64) *[]string, and A5 >>> >>> B0 and C0 >>> D0[int, string] and E0 >>> []int and []int >>> struct{ a, b *B5 } and struct{ a, b *B5 } >>> func(x int, y float64) *[]string, func(int, float64) (result *[]string), >>> and A5" >>> I mean, first we need to check that A0, A1 and []string are the same >>> type and after few examples like D0[int, string] is the same as E0, we have >>> stated []int and []int are the same type. If you convince yourself that A0 >>> is the same as A1 and both are the same as []string, checking that []int >>> has the same type as []int is quite trivial. I would prefer that examples >>> would start from basic cases like []int is []int and []A3 is []int (if this >>> one is true) and progress to more convoluted like D0[int, string] is E0. >>> >>> Best regards, >>> Kamil >>> >>> czwartek, 4 maja 2023 o 14:12:25 UTC+2 Axel Wagner napisał(a): >>> >>>> Personally, I'd rather add more examples of "self-evidently equal >>>> types". In my opinion, all the type aliases in that block confuse matters >>>> quite a bit. >>>> >>>> "[]int and []int are identical" is not actually self-evident at all. It >>>> is self-evident that any sensible definition of type identity *should* make >>>> them identical. But it's not self-evident that the given definition *does*. >>>> Spelling that out in the example, means you are nudged to look at the >>>> definition and see how their identity follows (by finding "Two slice types >>>> are identical if they have identical element types"). >>>> >>>> In fact, whenever you define an equivalence relation, proving that it >>>> is reflexive is the very first step. And it's not always trivial. For >>>> example, `==` on `float64` is *not* reflexive. It seems obvious that NaN == >>>> NaN *should* hold from how it's spelled - but it doesn't. >>>> >>>> So, I disagree that the examples should limit themselves to cases where >>>> it's non-obvious that the two types should be identical. >>>> >>>> On Thu, May 4, 2023 at 12:35 PM Kamil Ziemian <kziem...@gmail.com> >>>> wrote: >>>> >>>>> There is a second such example just below "[]int and []int", but to >>>>> understand it we need some more type declarations, I listed them below. >>>>> `type ( >>>>> A0 = []string >>>>> A1 = A0 >>>>> A2 = struct{ a, b int } >>>>> A3 = int >>>>> A4 = func(A3, float64) *A0 >>>>> A5 = func(x int, _ float64) *[]string >>>>> >>>>> B0 A0 >>>>> B1 []string >>>>> B2 struct{ a, b int } >>>>> B3 struct{ a, c int } >>>>> B4 func(int, float64) *B0 >>>>> B5 func(x int, y float64) *A1 >>>>> >>>>> // Unimportant part. >>>>> )` >>>>> The line in question is >>>>> "struct{ a, b *B5 } and struct{ a, b *B5 }" >>>>> which is true, but again feel out of place. I only start grasping >>>>> rules of types identity, but I make guess that it should be something like >>>>> "struct{ a, b *A5 } and struct{ a, b *B5 }" >>>>> >>>>> Of course it my just be that I'm just stupid. Feel free to inform me >>>>> that indeed I have no idea what is going on in the Go Spec. >>>>> >>>>> Best regards, >>>>> Kamil >>>>> czwartek, 4 maja 2023 o 12:20:35 UTC+2 Kamil Ziemian napisał(a): >>>>> >>>>>> Hello, >>>>>> >>>>>> In the section "Type identity" of Go Spec we read a list of type >>>>>> declarations >>>>>> `type ( >>>>>> A0 = []string >>>>>> A1 = A0 >>>>>> A2 = struct{ a, b int } >>>>>> A3 = int >>>>>> A4 = func(A3, float64) *A0 >>>>>> A5 = func(x int, _ float64) *[]string >>>>>> >>>>>> // Part unimportant for my point. >>>>>> )` >>>>>> and then we have list of types that are identical. Among them we can >>>>>> find text >>>>>> "[]int and []int" >>>>>> It is obviously true, but feel out of place. I make a humble guess >>>>>> that authors intended something along the lines >>>>>> "[]A3 and []int" >>>>>> Can someone look at this part of Go Spec? I feel that someone make a >>>>>> mistake, but at the same time humble me saying that there is any mistake >>>>>> in >>>>>> the Go Spec is something that I shouldn't do. >>>>>> >>>>>> Best regards, >>>>>> Kamil >>>>>> poniedziałek, 8 listopada 2021 o 10:59:23 UTC+1 Kamil Ziemian >>>>>> napisał(a): >>>>>> >>>>>>> Thank you Jan Mercl, now I start to understand this rule. >>>>>>> >>>>>>> Best >>>>>>> Kamil >>>>>>> >>>>>>> niedziela, 7 listopada 2021 o 19:34:41 UTC+1 Jan Mercl napisał(a): >>>>>>> >>>>>>>> On Sun, Nov 7, 2021 at 7:23 PM Kamil Ziemian <kziem...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>> > Can anyone give me explicit example when semicolon is omitted in >>>>>>>> accordance to the second rule and explanation where it should be? I >>>>>>>> probably see such situations dozens of times, I just not know that they >>>>>>>> would needed semicolon in some places. >>>>>>>> >>>>>>>> I think this is a simple example: >>>>>>>> https://play.golang.org/p/ZfKxTos6GjY >>>>>>>> >>>>>>>> Click "Run" to see the code is valid, then "Format" to watch one >>>>>>>> semicolon disappear and then "Run" again to see it's still valid >>>>>>>> code. >>>>>>>> >>>>>>> -- >>>>> >>>> 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...@googlegroups.com. >>>>> >>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/golang-nuts/001d0306-0a43-4680-a03c-3dc87e89dc5an%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/golang-nuts/001d0306-0a43-4680-a03c-3dc87e89dc5an%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- > 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/22f7a3ec-fb08-498e-9e79-b1759e45b5f2n%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/22f7a3ec-fb08-498e-9e79-b1759e45b5f2n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/CAMV2Rqr-o00ZU4qgmP1_7DorNv8L9Qf_aJ%2BEosQrapEtiuRDRQ%40mail.gmail.com.