News for hackers. Stuff that matters.
Re:Why don't more languages offer flow typing? by alduin32 on Monday April 04, 2022 @03:47PM (#30911181)
I don't think pattern matching and union-types makes narrow typing useless. Rust has both pattern matching and union types but still implements some specific forms of control-flow based typing.

For example, consider this Rust snippet :

    pub fn positive1(x: isize) -> Option<usize> {
        if x > 0 { Some(x as usize) } else { None }
    }
Unless I'm mistaken, without narrow typing, this cast would be impossible, and there would be no way to avoid the redundant runtime check caused by try_into().unwrap(), that is not even optimized unless you trick the compiler.
Re:Why don't more languages offer flow typing? by dragonwriter on Monday April 04, 2022 @03:52PM (#30911235)
> Unless I'm mistaken, without narrow typing, this cast would be impossible

same sized integer casts in Rusts are no-ops [0]; the conditional isn't type narrowing, it just avoids the cases where the cast would not preserve the same semantic value.

[0] https://doc.rust-lang.org/reference/expressions/operator-exp...

Re:Why don't more languages offer flow typing? by alduin32 on Monday April 04, 2022 @04:11PM (#30911430)
Right. Thank your for the correction.