pansa2 3 days ago

Doesn't matter what it is, it shouldn't break fundamental rules of the language.

Ruby's `case`/`in` has the same problem.

  • almostgotcaught 3 days ago

    > it shouldn't break fundamental rules of the language

    it doesn't? you simply don't understand what a match statement is.

    https://doc.rust-lang.org/book/ch19-03-pattern-syntax.html

        let num = Some(4);
    
        match num {
            Some(x) if x % 2 == 0 => println!("The number {x} is even"),
            Some(x) => println!("The number {x} is odd"),
            None => (),
        }
    
    notice that x is bound to 4.
    • tialaramex 3 days ago

      Which x? There are two in your code, one for each time you introduce a pattern Some(x) and each x has scope which of course ends when that pattern is done with

      Notice that the Python doesn't work this way, we didn't make a new variable but instead changed the existing one.

      Also, the intent in the Python was a constant, in Rust we'd give this constant an uppercase name by convention, but regardless it's a constant and so of course matching against a constant does what you expect, it can't re-bind a constant, 404 is a constant and so is `const NOT_FOUND: u16 = 404;`

      • almostgotcaught 3 days ago

        > Which x? There are two in your code, one for each time you introduce a pattern Some(x) and each x has scope which of course ends when that pattern is done with

        if each x's scope ends at the end of each case doesn't that mean there's only one x?

        > we didn't make a new variable but instead changed the existing one.

        so because python doesn't have scopes except for function scopes it shouldn't ever have any new features that intersect with scope?

    • pansa2 3 days ago

      > you simply don't understand what a match statement is

      It's "a DSL contrived to look like Python, and to be used inside of Python, but with very different semantics":

      https://discuss.python.org/t/gauging-sentiment-on-pattern-ma...

      • almostgotcaught 3 days ago

        you linked to a random detractors rant. i don't see what that has to do with whether a match statement binds a match?