[Haskell-cafe] Data & newtype differences. Today: strictness

Roman Cheplyaka roma at ro-che.info
Sun Jan 22 12:55:30 CET 2012

* Yves Parès <yves.pares at gmail.com> [2012-01-22 11:32:30+0100]
> These make me think that pattern matching against a newtype is always lazy
> (irrefutable). Am I right?


> Is there some litterature expliciting in a less empiric way than I did the
> differences like this between data and newtype? I've never come against
> such documentation through all my learning of Haskell, yet I think it's an
> important point.

See the Haskell report, section 3.17.2 "Informal Semantics of Pattern
Matching" [1].

In particular, this paragraph:

    The irrefutable patterns are as follows: a variable, a wildcard, N
    apat where N is a constructor defined by newtype and apat is
    irrefutable (see Section 4.2.3), var at apat where apat is irrefutable,
    or of the form ~apat (whether or not apat is irrefutable). All other
    patterns are refutable.

[1]: http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-600003.17.2

Roman I. Cheplyaka :: http://ro-che.info/

More information about the Haskell-Cafe mailing list