News for hackers. Stuff that matters.
Re:The Logical Disaster of Null by tigershark on Thursday May 10, 2018 @04:21AM (#17037167)
I didn’t reinvent anything, the concept of optional value is well ingrained in the real world. If you are registering on a website the email address is mandatory while the home address is optional. If you are sending a parcel the home address is mandatory and the email address is optional. If lazy programmers instead of modelling the optional concept in the type system use a null the result is the huge amount of null pointer exceptions that are riddling a lot of software and the useless “defensive guards” everywhere.
Re:The Logical Disaster of Null by dragonwriter on Thursday May 10, 2018 @04:24AM (#17037179)
> If lazy programmers instead of modelling the optional concept in the type system use a null the result is the huge amount of null pointer exceptions

Null values and null pointers aren't fundamentally the same thing, though some programming languages may be implemented in a way such that use of one exposed the other. A language can have a Null value that never results in NPEs.

Re:The Logical Disaster of Null by T-R on Thursday May 10, 2018 @04:48AM (#17037247)
I think that's kind of his point - Optionals/tagged unions are "Null values", but only in the places where they semantically make sense.

The problem with nulls isn't strictly null references, in the sense of "a pointer that points to nothing" or "a pointer that throws a null pointer exception", it's that languages with nulls implicitly make null an element of every type. They tend to do this because variables are allowed to have null references, but if you changed the semantics of variables to technically forbid null references, but still had a null value as an implicit element of every type, you'd still have the problem of needing to do runtime checks for null everywhere.

Re:The Logical Disaster of Null by ivanhoe on Thursday May 10, 2018 @05:14AM (#17037335)
But how do you handle those optional values then? Let's say you run a classifieds site, some of your users will probably prefer not to specify a price, it has to be an optional value. Or age field on a dating sites. How do you filter that data, or handle sorting on that field, without using null values to mark those that are undefined?
Re:The Logical Disaster of Null by Munksgaard on Thursday May 10, 2018 @05:33AM (#17037414)
That has been done with option types in functional languages since at least the 80s. It's not hard.
Re:The Logical Disaster of Null by coldtea on Thursday May 10, 2018 @06:16AM (#17037603)
e.g:

  sum = 0
  for entry in entries:
    case (val):
      null: pass
      number n: sum += n
    endcase
in pseudocode. Several languages have offered this since forever (eg. Haskell and Maybe).

The fun part is that the typesystem enforces that you check all possible cases -- or only lets you explicitly un wrap potentially null values.

So it's not like a C programmer checking if (x == NULL) manually.

Re:The Logical Disaster of Null by tigershark on Thursday May 10, 2018 @05:55AM (#17037517)
Option types and comprehensive pattern matching in F#. If you just need to filter them you can simply use Seq.choose.