on cfa7253 help sign in
project-m36/src/lib/ProjectM36/DataConstructorDef.hs
20 lines 787 B history raw
1module ProjectM36.DataConstructorDef where
2import ProjectM36.Base as B
3import qualified Data.Set as S
5emptyDataConstructor :: DataConstructorName -> DataConstructorDef
6emptyDataConstructor name' = DataConstructorDef name' []
8name :: DataConstructorDef -> DataConstructorName
9name (DataConstructorDef name' _) = name'
11fields :: DataConstructorDef -> [DataConstructorDefArg]
12fields (DataConstructorDef _ args) = args
14typeVars :: DataConstructorDef -> S.Set TypeVarName
15typeVars (DataConstructorDef _ tConsArgs) = S.unions $ map typeVarsInDefArg tConsArgs
17typeVarsInDefArg :: DataConstructorDefArg -> S.Set TypeVarName
18typeVarsInDefArg (DataConstructorDefTypeConstructorArg tCons) = B.typeVars tCons
19typeVarsInDefArg (DataConstructorDefTypeVarNameArg pVarName) = S.singleton pVarName