th-reify-many-0.1.8: Recurseively reify template haskell datatype info

Safe HaskellNone




isDataDec :: Dec -> Bool #

Returns True if the Dec is a DataD or NewtypeD

isNormalTyCon :: Dec -> Bool #

Returns True if the Dec is a DataD, NewtypeD, or TySynD.

decToFieldTypes :: Dec -> [[Type]] #

For data, newtype, and type declarations, yields a list of the types of the fields. In the case of a type synonyms, it just returns the body of the type synonym as a singleton list.

conToFieldTypes :: Con -> [Type] #

Returns the types of the fields of the constructor.

typeConcreteNames :: Type -> [Name] #

Returns the names of all type constructors which aren't involved in constraints.

decConcreteNames :: Dec -> [Name] #

Returns the names of all type constructors used when defining type constructors.

data TypeclassInstance #

Datatype to capture the fields of InstanceD.


TypeclassInstance Cxt Type [Dec] 

getInstances :: Name -> Q [TypeclassInstance] #

Given the Name of a class, yield all of the TypeclassInstances, with synonyms expanded in the Type field.

instanceMatches :: TypeclassInstance -> Name -> Bool #

Checks if the given name is the head of one of the paramaters of the given TypeclassInstance.

unAppsT :: Type -> [Type] #

Breaks a type application like A b c into [A, b, c].