[Haskell-cafe] Haskell 2010 report nit?

Mario Blažević mblazevic at stilo.com
Wed Dec 18 13:47:37 UTC 2019


On 2019-12-16 1:42 a.m., Viktor Dukhovni wrote:
> 
> Not sure where to post about this, and it has likely been noted
> elsewhere already, but reading through the report I see in Section
> 3.17.2

I'm not sure either, but one place you could report it is at 
https://github.com/haskell/rfcs/issues

No guarantees, but it would make the issue slightly less likely to be 
forgotten.


> 
>> • Consider the following declarations:
>>
>>    newtype N = N Bool
>>    data    D = D !Bool
>>
>> These examples illustrate the difference in pattern matching between types defined by data and newtype:
>>
>> (\  (N True) -> True) ⊥     ⇒    ⊥
>> (\  (D True) -> True) ⊥     ⇒    ⊥
>> (\ ~(D True) -> True) ⊥     ⇒    True
>>
>> Additional examples may be found in Section 4.2.3.
> 
> But unlike the examples in 4.2.3, which do show differences
> between "newtype" and "data", the above does not seem to
> show any actual difference.  For that the pattern after the
> constructor would I believe have to be irrefutable, which
> "True" is not.
> 
> Thus, e.g. the below (which duplicates 4.2.3) would do the job:
> 
>    (\  (N _) -> True) ⊥     ⇒    True
>    (\  (D _) -> True) ⊥     ⇒    ⊥
> 
> Perhaps I misunderstood something, but if not, and this has
> not been noted before, it may be worth fixing in the next
> revision.
> 



More information about the Haskell-prime mailing list