-- For generation of representation types
import TcEnv (tcLookupTyCon)
import TcRnMonad (TcM, newUnique)
-- For generation of representation types
import TcEnv (tcLookupTyCon)
import TcRnMonad (TcM, newUnique)
v1 <- tcLookupTyCon v1TyConName
plus <- tcLookupTyCon sumTyConName
times <- tcLookupTyCon prodTyConName
v1 <- tcLookupTyCon v1TyConName
plus <- tcLookupTyCon sumTyConName
times <- tcLookupTyCon prodTyConName
let mkSum a b = mkTyConApp plus [a,b]
mkProd a b = mkTyConApp times [a,b]
let mkSum a b = mkTyConApp plus [a,b]
mkProd a b = mkTyConApp times [a,b]
conName_matches c = mkStringLHS . showPpr . nameOccName
. dataConName $ c
conFixity_matches c = [mkSimpleHsAlt nlWildPat (fixity c)]
conName_matches c = mkStringLHS . showPpr . nameOccName
. dataConName $ c
conFixity_matches c = [mkSimpleHsAlt nlWildPat (fixity c)]
-- TODO: check that this works
conIsTuple_matches c = [mkSimpleHsAlt nlWildPat
(nlHsApp (nlHsVar arityDataCon_RDR)
-- TODO: check that this works
conIsTuple_matches c = [mkSimpleHsAlt nlWildPat
(nlHsApp (nlHsVar arityDataCon_RDR)
mkProd_E :: US -- Base for unique names
-> [RdrName] -- List of variables matched on the lhs
-> LHsExpr RdrName -- Resulting product expression
mkProd_E :: US -- Base for unique names
-> [RdrName] -- List of variables matched on the lhs
-> LHsExpr RdrName -- Resulting product expression
mkProd_P :: US -- Base for unique names
-> [RdrName] -- List of variables to match
-> LPat RdrName -- Resulting product pattern
mkProd_P :: US -- Base for unique names
-> [RdrName] -- List of variables to match
-> LPat RdrName -- Resulting product pattern
-mkProd_P us [] = mkM1_P (nlNullaryConPat u1DataCon_RDR)
-mkProd_P us vars = mkM1_P (foldBal prod appVars)
+mkProd_P _ [] = mkM1_P (nlNullaryConPat u1DataCon_RDR)
+mkProd_P _ vars = mkM1_P (foldBal prod appVars)