Pattern synonym 'Required' constraints === Datatype Contexts(?)

ÉRDI Gergő gergo at erdi.hu
Fri Mar 12 10:03:48 UTC 2021


On Thu, 11 Mar 2021, Richard Eisenberg wrote:

> You're right that these features sit in a similar space. The difference is that, with
> a pattern synonym, the required context might be useful. This is because pattern
> synonyms can perform computation (via view patterns), and this computation might
> plausibly require some class constraint. An easy example:
>       pattern Positive :: (Ord a, Num a) => a
> pattern Positive <- ((>0) -> True)

Heck, even just pattern matching on `0` (no view patterns) Requires the 
scrutinee to be both `Num` and `Eq`. To see why, ponder the inferred 
type of the following function:

```
foo 0 = True
foo _ = False
```


More information about the Glasgow-haskell-users mailing list