<div dir="ltr">Hello,<div><br></div><div>let's also start the discussion on feature request 126.   The idea here is that we allow the @ notation for explicit type applications to also be used on constructors in patterns.  Using @ with a constructor in a pattern has the same meaning as it does it an expression:  the provided type is used to instantiate the corresponding type parameter of the constructor.   If the type contains variables, those are treated in the same way as in #128, where "unbound" variables name the matching types.   Here are some examples:</div><div><br></div><div>    f1 (Just @Int x) = x    -- This has type `Maybe Int -> Int`</div><div><br></div><div>    f2 (Just @[a] x) = x == "c"   -- `a` is an alias for `Char`</div><div><br></div><div>    f3 (SomeException @e ex) = ...  -- `e` is a name for the existentially hidden exception type</div><div><br></div><div>Overall I think that is a simple and natural extension to the way @ already works, and I propose that we accept it.</div><div><br></div><div>Thoughts?</div><div><br></div><div>-Iavor</div><div><br></div><div><br></div></div>