Top
Best
New

Posted by vips7L 3 days ago

Features of D That I Love(bradley.chatha.dev)
197 points | 251 commentspage 3
trikko 3 days ago|
The only missing thing is a big sponsor. mozilla -> rust google -> go, kotlin ... n/a -> dlang
throwawaymaths 3 days ago||
$ 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

WhereIsTheTruth 3 days ago||
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

ioasuncvinvaer 3 days ago||
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?
sedatk 3 days ago|||
> 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..];
bachmeier 3 days ago||
I don't see why it would be a terrible idea. It's pretty convenient if you're slicing a multidimensional array.
throwawaymaths 3 days ago||
except are you sure that's what it's doing? it could have been overloaded. you have to ask yourself that every time.
Doxin 3 days ago|||
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?

throwawaymaths 2 days ago||
> 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.

Doxin 1 day ago||
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.

1980phipsi 3 days ago|||
I've looked at a lot of D code, and I can't recall it ever being misused.
coldtea 3 days ago|
Not the D I expected from reading the title

(come on, a low effort joke now and then is ok, if not for anything else, as an counter-example)