Empty VS null array?
Max Samukha
maxsamukha at gmail.com
Fri Oct 25 09:31:53 PDT 2013
On Friday, 25 October 2013 at 11:41:38 UTC, Kagamin wrote:
> On Monday, 21 October 2013 at 10:33:01 UTC, Regan Heath wrote:
>> null strings are no different to null class references,
>> they're not a special case.
>
> True. That's an implementation detail which has no meaning for
> business logic. When implementation deviates from business
> logic, one ends up fixing the implementation details everywhere
> in order to implement business logic. That's why
> string.IsNullOrEmpty is used.
That's not an implementation detail. Whether "null" is in the set
of values of a string type and whether it is identical to "empty"
are fundamental properties of that type. If you define the string
type to include "null", then "null" should be either identical to
"empty" in *all cases* or distinct from that in all cases.
D chose to fuse "null" and "empty" together in an inconsistent
manner, which is a mistake. If we include "null" in the set, then
either the [] literal should be non-null (and "null" and "empty"
properly disjoint), or "null" and "empty" should always represent
the same value. If we exclude it - *then* "null" becomes an
implementation detail and should be dealt with only via .ptr.
>
>> People seem to have this odd idea that null is somehow an
>> invalid state for a string /reference/ (c# strings are
>> reference types), it's not.
>
> That's the very problem: null and empty are valid states and
> must be treated equally as "no data", but they can't for purely
> technical reasons.
Whether they are valid states is irrelevant. What matters is
whether they represent identical values. In D, they are
unhealthily mixed.
More information about the Digitalmars-d
mailing list