SML also shares these semantics when it comes to bindings. That is, a subsequent binding to the same identifier can ‘mask’ those that proceed it, even if they are in the same scope and the bound values are of different types. Once a value has had its identifier masked, it can no longer be accessed.
I assume this behaviour was passed on to Ocaml, and Rust inherited it from there. Rust was originally written in Ocaml, and has drawn many influences from there. I personally find it useful from time to time. ~Brendan On 14 Nov 2013, at 3:25 am, Joshua Rodgers <[email protected]> wrote: > I'm curious as to why this is valid, though? This makes sense if you're > inside a new or nested scope, but why is it valid inside the same scope as > illustrated in the code example? > > I can understand it from the perspective that I need to mask a function name > (but that's a nested scope to me, at that point). > > > On Wed, Nov 13, 2013 at 8:54 AM, Scott Lawrence <[email protected]> wrote: > I would think that `test()` (the function) is in scope for the duration of > `let test =`, and then the new definition masks the old one. Similarly, > > let x = 2; > let x = x + 2; > > If you change the last line to /call/ test(), you should get an error. > > > On Wed, 13 Nov 2013, Philip Herron wrote: > > Hey all > > I am still learning but i just tried something which i expected to give an > error but works: > > fn test () -> int { > 1 > } > > fn main () { > let test = test (); > println (format! ("{}", test)); > } > > I guess on compilation the names are mangled against their types or > something so you can differentiate between test the function and test the > variable. Not sure would be nice to get some clarification what this > behavior is. > > Thanks > > --Phil > > > -- > Scott Lawrence > _______________________________________________ > Rust-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/rust-dev > > _______________________________________________ > Rust-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/rust-dev _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
