On Sunday, 21 June 2015 at 03:23:18 UTC, Dennis Ritchie wrote:
Recently published documentation Nightly Rust. I saw this:
https://doc.rust-lang.org/nightly/book/slice-patterns.html

What do you think about this: a terrible thing or a cool feature?

fn is_symmetric(list: &[u32]) -> bool {
    match list {
        [] | [_] => true,
        [x, inside.., y] if x == y => is_symmetric(inside),
        _ => false
    }
}

fn main() {
    let sym = &[0, 1, 4, 2, 4, 1, 0];
    assert!(is_symmetric(sym));

    let not_sym = &[0, 1, 7, 2, 4, 1, 0];
    assert!(!is_symmetric(not_sym));
}

http://is.gd/TvrXSn

I see this competition slices of D. Also seen are not very clear design.

Like, every modern language has a notion of closed iteration abstraction (Ranges, Java streams, Clojure seqs, .net LINQ, etc...). Many also have slicing: go, python, rust, ml...

It's time to get over thinking those are unique :)

What you linked here is a tutorial for pattern matchig on slices (which is a feature unrelated to D as it doesn't have pattern matching)- the doc for slices themselves is here:

http://doc.rust-lang.org/nightly/std/slice/

Reply via email to