News for hackers. Stuff that matters.
Re:Dada, an Experiement by the Creators of Rust by bananapub on Wednesday March 06, 2024 @08:06AM (#39615526)
one of the other reasons global inference isn't used is because it causes weird spooky action at a distance - changing how something is used in one place will break other code.
Re:Dada, an Experiement by the Creators of Rust by BoppreH on Wednesday March 06, 2024 @08:10AM (#39615562)
I've heard that, but never seen an example*. If the type system complains of an issue in other code after a local change, doesn't that mean that the other code indeed needs updating (modulo false positives, which should be rarer with granular types).

Or is this about libraries and API compatibility?

* I have seen examples of spooky-action-at-a-distance where usage of a function changes its inferred type, but that goes away if functions are allowed to have union types, which is complicated but not impossible. See: https://github.com/microsoft/TypeScript/issues/15114

Re:Dada, an Experiement by the Creators of Rust by nu11ptr on Wednesday March 06, 2024 @08:36AM (#39615796)
Try writing a larger OCaml program and not using interface files. It definitely happens.
Re:Dada, an Experiement by the Creators of Rust by BoppreH on Wednesday March 06, 2024 @09:55AM (#39616601)
I've never used OCaml, so I'm curious to what exactly happens, and if language design can prevent that.

If I download a random project and delete the interface files, will that be enough to see issues, or is it something that happens when writing new code?

Re:Dada, an Experiement by the Creators of Rust by nu11ptr on Wednesday March 06, 2024 @10:15AM (#39616820)
If you delete your interface files and then change the type used when calling a function it can cascade through your program and change the type of the function parameter. For this reason, I generally feel function level explicit types are a fair compromise. However, making that convention instead of required (so as to allow fast prototyping) is probably fine.
Re:Dada, an Experiement by the Creators of Rust by iopq on Wednesday March 06, 2024 @04:32PM (#39621812)
Just require it for public functions. Your own code can be as messy as you want unser the hood
Re:Dada, an Experiement by the Creators of Rust by Narishma on Wednesday March 06, 2024 @10:26AM (#39616940)
> If the type system complains of an issue in other code after a local change, doesn't that mean that the other code indeed needs updating

The problem is when it doesn't complain but instead infers some different type that happens to match.