const challenge

Sergey Gromov snake.scaly at gmail.com
Fri Feb 1 10:24:41 PST 2008


Kris Wrote:
> A need for such sugar in the language syntax would surely tend to 
> indicate a notable flaw?

Yes you're right.  It's an attempt to avoid undefined behavior in
specification in situations where the behavior is essentially defined.

1. Anything you 'new' is basically unique:
    new char[]
    "a".dup
    "a" ~ "b"
    are all of type unique(unique(char)[]),
    so as any immediate literal:
    typeof(4) == unique(int)
2. Any non-unique type within a type casts away uniqueness:
    typeof(["a", "b"]) == invariant(char)[][]
    int[] x = [1,2,3];
    int[][] y = [x];
    typeof(y.dup) == int[][]
    but typeof([[1,2,3]]) == unique(unique(unique(int)[])[])
3. unique(...) casts to invariant(...), const(...), or just ... implicitly
with well-defined behavior.
4. There is no such thing as unique variable.

Did I miss something ?

SnakE



More information about the Digitalmars-d mailing list