[ghc-steering-committee] Discussion about "Type Application in Patterns" (#126)

Iavor Diatchki iavor.diatchki at gmail.com
Thu Jul 26 08:08:57 UTC 2018


Hello,

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:

    f1 (Just @Int x) = x    -- This has type `Maybe Int -> Int`

    f2 (Just @[a] x) = x == "c"   -- `a` is an alias for `Char`

    f3 (SomeException @e ex) = ...  -- `e` is a name for the existentially
hidden exception type

Overall I think that is a simple and natural extension to the way @ already
works, and I propose that we accept it.

Thoughts?

-Iavor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20180726/313141e2/attachment.html>


More information about the ghc-steering-committee mailing list