Good price.

  • tiredofsametab
    link
    fedilink
    71 month ago

    In JS, it’s just NaN if my browser’s console is to be believed. I suspected it would probably be {object} for no clear reason

    • nickwitha_k (he/him)
      link
      71 month ago

      for no clear reason

      JS That’s the reason. The language has an awful type system.

      • Victor
        link
        fedilink
        21 month 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)
          link
          21 month 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
            link
            fedilink
            11 month ago

            If nil ≠ nil, how do you compare a variable to the literal?

            • nickwitha_k (he/him)
              link
              11 month ago

              You’d first check for nil values, then compare like normal. Extra step, yes, but it keeps you from hitting NPEs through that route.

              • Victor
                link
                fedilink
                11 month 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)
                  link
                  11 month 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!")
                  }
                  
                  • Victor
                    link
                    fedilink
                    1
                    edit-2
                    1 month ago

                    What I mean is that in JS you can’t do NaN != NaN, not even variable != NaN. So you’re not saying it’s the same in Go, since you can do a != nil?