On 09/07/14 00:21, bearophile wrote:

9. Built-in tuples usable in all the most important situations (with a
syntax that doesn't kill possible future improvements of the switch
statement to perform basic pattern matching on structs that have an
optional method named "unapply").

I think it would be possible to implement pattern matching in library code. Something like this:

match!(value,
    (int t) => ifInt(),
    (char t) => ifChar(),
    () => noOtherMatch()
);

Destructing a type could look something like this:

match(value,
(type!(Foo), int a, int b) => doSomething(), // match if value is of type Foo and extract it (int a, int b) => doSomething() // match anything that can be destructed to two ints
);

The syntax is not so pretty but I think it would be possible.

--
/Jacob Carlborg

Reply via email to