polyglot-0.1.1.0: src/SyntaxTrees/Haskell/ClassDef.hs
module SyntaxTrees.Haskell.ClassDef where
import SyntaxTrees.Haskell.Common (Class)
import SyntaxTrees.Haskell.DataDef (DerivingStrategy)
import SyntaxTrees.Haskell.FnDef (FnDefOrSig)
import SyntaxTrees.Haskell.Type (AnyKindedType, ClassConstraint, TypeParam)
data ClassDef
= ClassDef
{ constraints :: [ClassConstraint]
, name :: Class
, typeParams :: [TypeParam]
, defs :: [FnDefOrSig]
}
deriving (Show)
data InstanceDef
= InstanceDef
{ constraints :: [ClassConstraint]
, class' :: Class
, types :: [AnyKindedType]
, defs :: [FnDefOrSig]
}
deriving (Show)
data DerivingDef
= DerivingDef
{ strategy :: DerivingStrategy
, constraints :: [ClassConstraint]
, class' :: Class
, types :: [AnyKindedType]
, derivingVia :: Maybe Class
}
deriving (Show)