[Haskell-cafe] Surprising interaction between @-patterns and nested patterns

David Feuer david.feuer at gmail.com
Thu Jan 5 13:51:50 UTC 2023


There are certainly cases where lazy pattern matches are important. But IMO
they're always *a bit weird*, and deserve that ~ syntactic marker letting
people know that *something a bit weird is happening*.

On Thu, Jan 5, 2023, 6:18 AM Tom Ellis <
tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk> wrote:

> On Tue, Jan 03, 2023 at 08:22:08AM +0100, Henning Thielemann wrote:
> > On Mon, 2 Jan 2023, David Feuer wrote:
> >
> > > My opinion, for several years, has been that the Haskell designers
> erred in making outermost patterns
> > > lazy by default in let and where, and at the top level. I believe they
> should have gone with
> > > something much simpler:
> > > 1. Patterns are strict by default.
> > > 2. Variables are lazy by default.
> > > 3. Patterns at the top level must be marked lazy.
> > > 4. (With bang patterns) Variables at the top level may not be marked
> strict.
> > >
> > > That would harmonize the way patterns are handled in let and where
> with the way they're handled in
> > > function arguments and case expressions, as well as removing the
> outermost-pattern special case which
> > > makes the *strictness* of inner patterns surprising.
> >
> > me too
>
> I am inclined to agree.  But are there any nasty corner cases
> involving recursive bindings?
>
> > > Unfortunately, I don't think there's much chance of any of these
> > > changing in Haskell.
> >
> > Could start as a nice GHC extension like Strict Haskell.
>
> I agree, but an easier sell if there aren't nasty corner cases.
>
> Tom
> _______________________________________________
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20230105/628d72f5/attachment.html>


More information about the Haskell-Cafe mailing list