<div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi,</div><div>In the function DsMeta.repE there is a format being repeated:</div><div>For example in:</div><div><br></div><div>repE e@(ExplicitTuple _ es boxed)<br>  | not (all tupArgPresent es) = notHandled "Tuple sections" (ppr e)<br>  | isBoxed boxed = do { xs <- repLEs [e | (dL->L _ (Present _ e)) <- es]<br>                       ; repTup xs }<br>  | otherwise     = do { xs <- repLEs [e | (dL->L _ (Present _ e)) <- es]<br>                       ; repUnboxedTup xs }</div><div><br></div><div>There is  `(dL->L _ (Present _ e)) <- es`. I don't understand how this type checks correctly.</div><div>If I'll try to do</div><div><br></div><div> data Foo a = Foo a</div><div>runQ [| Foo b <- Foo 1 |]<br></div><div><br></div><div>in ghciI get an error. What is the difference?</div><div><br></div><div>Yotam<br></div></div></div></div>