\begin{code} {-# LANGUAGE CPP, KindSignatures #-} module HsExpr where import SrcLoc ( Located ) import Outputable ( SDoc, OutputableBndr, Outputable ) import {-# SOURCE #-} HsPat ( LPat ) import Data.Data data HsExpr (i :: *) data HsCmd (i :: *) data HsSplice (i :: *) data MatchGroup (a :: *) (body :: *) data GRHSs (a :: *) (body :: *) #if __GLASGOW_HASKELL__ > 706 instance Typeable HsSplice instance Typeable HsExpr instance Typeable MatchGroup instance Typeable GRHSs #else instance Typeable1 HsSplice instance Typeable1 HsExpr instance Typeable1 HsCmd instance Typeable2 MatchGroup instance Typeable2 GRHSs #endif instance Data i => Data (HsSplice i) instance Data i => Data (HsExpr i) instance Data i => Data (HsCmd i) instance (Data i, Data body) => Data (MatchGroup i body) instance (Data i, Data body) => Data (GRHSs i body) instance OutputableBndr id => Outputable (HsExpr id) instance OutputableBndr id => Outputable (HsCmd id) type LHsExpr a = Located (HsExpr a) type SyntaxExpr a = HsExpr a pprLExpr :: (OutputableBndr i) => LHsExpr i -> SDoc pprExpr :: (OutputableBndr i) => HsExpr i -> SDoc pprSplice :: (OutputableBndr i) => HsSplice i -> SDoc pprPatBind :: (OutputableBndr bndr, OutputableBndr id, Outputable body) => LPat bndr -> GRHSs id body -> SDoc pprFunBind :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => idL -> Bool -> MatchGroup idR body -> SDoc \end{code}