X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fglasgow_exts.xml;h=aafe421c67cac1d260e837af53225d76e8c0259c;hb=7d7d29b6fd7967099856b6f7e0bf7ee2e7a212ea;hp=b02b27ecd149926609a2728990092ed593042306;hpb=0db3e625ff0717f36495b375e6008995d6ffb0a3;p=ghc-hetmet.git diff --git a/docs/users_guide/glasgow_exts.xml b/docs/users_guide/glasgow_exts.xml index b02b27e..aafe421 100644 --- a/docs/users_guide/glasgow_exts.xml +++ b/docs/users_guide/glasgow_exts.xml @@ -1999,18 +1999,18 @@ The rule for record update is this: the types of the updated fields may mention only the universally-quantified type variables of the data constructor. For GADTs, the field may mention only types -that appear as a simple type-variable argument in the constructor's result type. -. For exmaple: +that appear as a simple type-variable argument in the constructor's result +type. For example: data T a where { T1 { f1::a, f2::(a,b) } :: T a } -- b is existential upd1 t x = t { f1=x } -- OK: upd1 :: T a -> b -> T b upd2 t x = t { f2=x } -- BAD (f2's type mentions b, which is - existentially quantified) + -- existentially quantified) -data G a b where { G1 { f1::a, f2::c } :: G a [c] } -upd3 g x = g { f1=x } -- OK: upd3 :: G a b -> c -> G c b -upd4 g x = g { f2=x } -- BAD (f2's type mentions c, which is not a simple - -- type-varialbe argument in G1's result type) +data G a b where { G1 { g1::a, g2::c } :: G a [c] } +upd3 g x = g { g1=x } -- OK: upd3 :: G a b -> c -> G c b +upd4 g x = g { g2=x } -- BAD (f2's type mentions c, which is not a simple + -- type-variable argument in G1's result type)