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@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.