1 {-# LANGUAGE PatternSynonyms #-}
3 data MyRec
= MyRec
{ foo
:: Int, qux
:: String }
5 pattern HisRec
{f1
, f2
} = MyRec
{foo
= f1
, qux
=f2
}
7 updater
,updater1
, updater2
:: MyRec
-> MyRec
8 updater a
= a
{f1
= 1 }
10 updater1 a
= a
{f1
= 1, qux
= "two" }
12 updater2 a
= a
{f1
= 1, foo
= 2 }