anakin78z,
@anakin78z@lemmy.world avatar

I like how the code adds a 0 at the start.

EarMaster,

The code probably checks if the following number is greater than 10 (which fails for NaN) and otherwise adds a 0 in front.

sbv,

dirty onanists spilling their seed

Maalus,

Lennin died, with him died lenninism. Stalin died, with him died stalinism. Grandpa Onan, don’t die!

Swedneck,
@Swedneck@discuss.tchncs.de avatar

lidl quality

Transporter_Room_3,

You ever have one of those moments when you just put 2 and 2 together, and also that you should have had that realization many years ago?

I just realized what NaN stands for…

This must be what people who get told “you can just wait for the shower water to warm up before hopping in” feel like.

nickwitha_k,

0*(NaN)… So does that mean the price IS a number?

rikudou,

Isn’t any math operation involving NaNs also a NaN? At least that’s my gut feeling.

nickwitha_k,

Good point.

NegativeInf,

Based on my frequent exploding and vanishing gradients, that would be a yes.

match,
@match@pawb.social avatar

Thanks, relevant username!

tiredofsametab,

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,

for no clear reason

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

victorz,

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,

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, nil ≠ nil 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.

victorz,

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

nickwitha_k,

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

victorz,

You’d first check for nil values

What does this mean, if not the same as

then compare like normal

?

nickwitha_k,

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):


<span style="color:#323232;">var a *string
</span><span style="color:#323232;">var b *string
</span><span style="color:#323232;">
</span><span style="color:#323232;">...
</span><span style="color:#323232;">if a != nil && b != nil {
</span><span style="color:#323232;">  if a == b {
</span><span style="color:#323232;">    fmt.Println("Party!")
</span><span style="color:#323232;">  } else {
</span><span style="color:#323232;">    fmt.Println("Also Party!")
</span><span style="color:#323232;">}
</span>
victorz, (edited )

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?

nickwitha_k,

Kinda. nil is a weird value in Go, not quite the same as null or None in JS and Python, respectively. A nil value may or may not be typed and it may or may not be comparable to similar or different types. There is logical consistency to where these scenarios can be hit but it is pretty convoluted and much safer, with fewer footguns to check for nil values before comparison.

I’m other words, in Go (nil == nil) || (nil != nil), depending on the underlaying types. One can always check if a variable has a nil value but may not be able to compare variables if one or more have a nil value. Therefore, it is best to first check for nil values to protect against errors that failure to execute comparisons might cause (anything from incorrect outcome to panic).

ETA: Here’s some examples


<span style="color:#323232;">// this is always possible for a variable that may have a nil value. 
</span><span style="color:#323232;">a != nil || a == nil
</span><span style="color:#323232;">
</span><span style="color:#323232;">a = nil
</span><span style="color:#323232;">b = nil
</span><span style="color:#323232;">// This may or may not be valid, depending on the underlying types.
</span><span style="color:#323232;">a != b || a == b
</span><span style="color:#323232;">
</span><span style="color:#323232;">// Better practice for safety is to check for nil first
</span><span style="color:#323232;">if a != nil && b != nil {
</span><span style="color:#323232;">    if a == b {
</span><span style="color:#323232;">        fmt.Println("equal")
</span><span style="color:#323232;">    } else {
</span><span style="color:#323232;">        fmt.Println("not equal")
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">} else {
</span><span style="color:#323232;">    fmt.Println("a and/or b is nil and may not be comparable")
</span><span style="color:#323232;">}
</span>
victorz,

Thoroughly confusing lol. I think I need to check the spec in order to grasp this. I feel like this has more to do with the typing system rather than nil itself, maybe. I’ll see.

But yeah, this is nothing like null or undefined in JS, but more similar to NaN.

Thank you for trying to explain!

nickwitha_k,

Yeah… It’s weird but I find it useful that it is, in a weird way. Treating it as an uncertainty means that one MUST explicitly check all pointers for nil as part of normal practice. This avoids NPEs.

RecluseRamble,

I suppressed most of my former js knowledge but I guess it’s a string now.

mindbleach,

Javascript carcinization.

lnxtx,
@lnxtx@feddit.nl avatar
rikudou,

In my language, onanování is masturbating. And onan is a mild insult insinuating that someone wanks a lot.

wanderer,

It’s onanism in English. And it’s rather stupid to call it that because Onan didn’t masturbate, he used the pull out method to avoid getting his sister-in-law pregnant with his brother’s kid. (yes, I know that sounds weird but that’s the story)

rikudou,

Not the same thing, I’m pretty sure something like that is in almost any language, but here it’s the official word for male masturbation, not some niche word that’s not really used much.

I know the story and you’re right, it’s pretty dumb how it’s used.

Oka,

“That makes it free, right?”

  • All
  • Subscribed
  • Moderated
  • Favorites
  • programmer_humor@programming.dev
  • DreamBathrooms
  • ngwrru68w68
  • modclub
  • magazineikmin
  • thenastyranch
  • rosin
  • khanakhh
  • InstantRegret
  • Youngstown
  • slotface
  • Durango
  • kavyap
  • mdbf
  • GTA5RPClips
  • JUstTest
  • tacticalgear
  • normalnudes
  • tester
  • osvaldo12
  • everett
  • cubers
  • ethstaker
  • anitta
  • provamag3
  • Leos
  • cisconetworking
  • megavids
  • lostlight
  • All magazines