Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

$ operator. great idea! i believe the only contender is julia (with "end" but that is a SUUPER awkward keyword since end also closes functions)

> Structs and classes can even overload this operator

nope. fuck, now it's a terrible idea






I'll take this:

    Vec2 result = translation + (rotationMatrix * (scalingMatrix * point));

Over this:

    const result = vec2Add(translation, mat2MulVec2(rotationMatrix, mat2MulVec2(scalingMatrix, point)));
Anytime

And that's a very simple example, in Zig, that kind of equations doesn't scale well, when it comes to readability


A problem that I always run into with code using * for multiplication of matrices is which operation they use. Is it element wise or a matrix multiplication?

> i believe the only contender is julia

C# has "^n" notation that means "length - n". For example:

Take the last element of an array or any other structure that supports indices:

    var a = ar[^1];
Take the last three elements of an array or any other data structure that supports ranges:

    var lastThree = ar[^3..];

I don't see why it would be a terrible idea. It's pretty convenient if you're slicing a multidimensional array.

except are you sure that's what it's doing? it could have been overloaded. you have to ask yourself that every time.

Or you can assume it's implemented sanely. Yes if someone overrides $ and does something wildly wrong with it that'll get confusing. That's the fault of whoever wrote that code though, not of $ itself.

You can also overload +, imagine the mayhem if someone did something weird with that. should we ban overloading operators altogether?


> Or you can assume it's implemented sanely

excuse me, have you spent any time in tech? people fucking love to do clever shit that gets people in trouble. using NULL as a not-pointer value signalling absence (without safeguards) is probably the most notorious -- but at least useful, but if you want to get brain meltingly annoying and pervasive, we dont have to stray too far from the idea of operator overloading; c++'s << operator can just go to hell.


I work in tech full time. I mostly write python code. Python similar to D allows you to override ~all operators.

I have yet to run into an instance where someone has overridden operators to do something completely insane. Honestly the weirdest real use-case I've ran into is pathlib overriding division on path objects to instead mean concatenation. Which seems confusing until you realize it just means paths get written like `build_dir = root_dir / "build"` which is sensible enough.

Weirdest not-real use case is of course the famous goto-in-python module which overrides attribute access in combination with unhinged dark magic to implement goto.


I've looked at a lot of D code, and I can't recall it ever being misused.



Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: