Good price.

    • Victor@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      10 months ago

      I think its type system is “okay”, I mean inherently dynamic typing is pretty error-prone. But its type coercion algorithms are bonkers. Also that whole “NaN ≠ NaN” business…

      • nickwitha_k (he/him)@lemmy.sdf.org
        link
        fedilink
        arrow-up
        3
        ·
        10 months ago

        Also that whole “NaN ≠ NaN” business…

        See that’s one of the parts that is actually almost in line with other languages. In Go, for example, nilnil because nil is, by definition, undefined. You can’t say whether one thing that you know nothing about is at all like something else that you know nothing about. It really should raise an exception at the attempt to compare NaN though.

            • Victor@lemmy.world
              link
              fedilink
              arrow-up
              1
              ·
              10 months ago

              You’d first check for nil values

              What does this mean, if not the same as

              then compare like normal

              ?

              • nickwitha_k (he/him)@lemmy.sdf.org
                link
                fedilink
                arrow-up
                1
                ·
                10 months ago

                IIRC, a nil value can be checked against a literal successfully but not against another nil value. Say you want to check for equality of two vars that could be nil. You just need an extra if statement to ensure that you are not trying to compare nil and nil or nil and a non-nil value (that’ll give you a type error or NPE):

                var a *string
                var b *string
                
                ...
                if a != nil && b != nil {
                  if a == b {
                    fmt.Println("Party!")
                  } else {
                    fmt.Println("Also Party!")
                }