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.
[ Parent
| on HN ]
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.