News for hackers. Stuff that matters.
Re:dotNET (OK, C#) gets union types by fragmede on Sunday May 24, 2026 @10:36AM (#48257597)
The problem with operator overloading is it makes things confusing when mixing types and let's programmers write confusing code.

    Person x;
    Job y;
    CustomType z = x + y;
WTF is Z?

Is the argument, anyway, I support operator overloading.

Re:dotNET (OK, C#) gets union types by xigoi on Sunday May 24, 2026 @11:27AM (#48258040)
> WTF is Z?

Hopefully a type error, because no sane programmer would implement addition like this. Obviously an insane programmer could, but that’s not the fault of operator overloading. The following code is exactly as confusing:

    Person x;
    Job y;
    CustomType z = add(x, y);
Re:dotNET (OK, C#) gets union types by tpxl on Sunday May 24, 2026 @01:03PM (#48259023)
I don't know; you can bit shift an output stream by a string (or char array) in C++ (std::cout << "Hello, world!"). That seems pretty mad to me.
Re:dotNET (OK, C#) gets union types by xigoi on Sunday May 24, 2026 @01:14PM (#48259112)
Are you trying to imply that Bjarne Stroustrup is a sane programmer?
Re:dotNET (OK, C#) gets union types by bonesss on Sunday May 24, 2026 @03:30PM (#48260284)
> WTF is Z?

Take a person, add a job, you get an Employee or EmployedPerson. Person.add(job).

I agree overloading can create footguns, but domain concepts should make a lot of sense in context when basic arithmetic operations are performed on them. Party = Meeting + Booze.

Custom operators are a big assistance for DSLs, and overloading can also aide their creation and elegance. Part of the “awesome but don’t be a jerk about it” toolbox.

Re:dotNET (OK, C#) gets union types by joe_mwangi on Sunday May 24, 2026 @04:03PM (#48260546)
Java’s planned approach is more like typeclass-style interfaces than unrestricted operator overloading. Types opt into core-defined operator contracts, rather than every library inventing arbitrary meanings for symbols.