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

Henning Thielemann lemming at henning-thielemann.de
Tue Jan 3 07:22:08 UTC 2023

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

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

More information about the Haskell-Cafe mailing list