That was my thinking with using an explicit lazy pattern match indication:

    let ~(Just a) = …

It seems to me that this shouldn’t warn (though apparently it does), since it’s overly opting in to a non-exhaustive match.

Jeff

On Jan 25, 2023, at 9:08 PM, David Feuer <david.feuer@gmail.com> wrote:


It seems to me that instead of working around this, we should add a pragma to suppress the warning at the pattern site. Maybe something like

let
  {-# PARTIAL_MATCH #-}
  Just a = blah blah

That way GHC can see that you noticed the partial match and that you're okay with it.

On Wed, Jan 25, 2023, 7:06 PM Kazu Yamamoto (山本和彦) via Haskell-Cafe <haskell-cafe@haskell.org> wrote:
Hello,

The recent GHC added incomplete-uni-patterns to the -Wall option.
So, we have a waning with the following code:

    let [addr,port] = args

To avoid this, I changed the code to:

    let addr = head args
        port = head $ tail args

In my opinion, this seems Lisp rather than Haskell.

Also, I need to avoid:

    let Just val = mval

Rahter, I use:

    let val = fromJust mval

This is annoying to me.

How do you get along with incomplete-uni-patterns?
I would like to know the best current practice.

--Kazu


_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.