haskell-src-exts-util-0.2.1.2: Helper functions for working with haskell-src-exts trees

Safe HaskellNone
LanguageHaskell2010

Language.Haskell.Exts.Util

Contents

Synopsis

Free variables of ASTs

class FreeVars a where #

Minimal complete definition

freeVars

Methods

freeVars :: a -> Set (Name ()) #

Return the variables, erring on the side of more free variables

Instances

(Data s, Ord s) => FreeVars [IPBind s] # 

Methods

freeVars :: [IPBind s] -> Set (Name ()) #

(Data s, Ord s) => FreeVars [Exp s] # 

Methods

freeVars :: [Exp s] -> Set (Name ()) #

(Data s, Ord s) => FreeVars [Alt s] # 

Methods

freeVars :: [Alt s] -> Set (Name ()) #

(Data s, Ord s) => FreeVars (Set (Name s)) # 

Methods

freeVars :: Set (Name s) -> Set (Name ()) #

(Data s, Ord s) => FreeVars (IPBind s) # 

Methods

freeVars :: IPBind s -> Set (Name ()) #

(Data s, Ord s) => FreeVars (Rhs s) # 

Methods

freeVars :: Rhs s -> Set (Name ()) #

(Data s, Ord s) => FreeVars (GuardedRhs s) # 

Methods

freeVars :: GuardedRhs s -> Set (Name ()) #

(Data s, Ord s) => FreeVars (Exp s) # 

Methods

freeVars :: Exp s -> Set (Name ()) #

(Data s, Ord s) => FreeVars (Alt s) # 

Methods

freeVars :: Alt s -> Set (Name ()) #

data Vars #

Constructors

Vars 

Fields

Instances

Monoid Vars # 

Methods

mempty :: Vars #

mappend :: Vars -> Vars -> Vars #

mconcat :: [Vars] -> Vars #

AllVars Vars # 

Methods

allVars :: Vars -> Vars #

class AllVars a where #

Minimal complete definition

allVars

Methods

allVars :: a -> Vars #

Return the variables, erring on the side of more free variables

Instances

AllVars Vars # 

Methods

allVars :: Vars -> Vars #

(Data s, Ord s) => AllVars [Decl s] # 

Methods

allVars :: [Decl s] -> Vars #

(Data s, Ord s) => AllVars [Match s] # 

Methods

allVars :: [Match s] -> Vars #

(Data s, Ord s) => AllVars [Pat s] # 

Methods

allVars :: [Pat s] -> Vars #

(Data s, Ord s) => AllVars [Stmt s] # 

Methods

allVars :: [Stmt s] -> Vars #

(Data s, Ord s) => AllVars [QualStmt s] # 

Methods

allVars :: [QualStmt s] -> Vars #

(Data s, Ord s) => AllVars (Maybe (Binds s)) # 

Methods

allVars :: Maybe (Binds s) -> Vars #

(Data s, Ord s) => AllVars (Decl s) # 

Methods

allVars :: Decl s -> Vars #

(Data s, Ord s) => AllVars (Binds s) # 

Methods

allVars :: Binds s -> Vars #

(Data s, Ord s) => AllVars (Match s) # 

Methods

allVars :: Match s -> Vars #

(Data s, Ord s) => AllVars (Pat s) # 

Methods

allVars :: Pat s -> Vars #

(Data s, Ord s) => AllVars (Stmt s) # 

Methods

allVars :: Stmt s -> Vars #

(Data s, Ord s) => AllVars (QualStmt s) # 

Methods

allVars :: QualStmt s -> Vars #

Rebracketing of ASTs

class Brackets a where #

Minimal complete definition

remParen, addParen, isAtom, needBracket

Methods

remParen :: a -> Maybe a #

addParen :: a -> a #

isAtom :: a -> Bool #

Is this item lexically requiring no bracketing ever i.e. is totally atomic

needBracket :: Int -> a -> a -> Bool #

Is the child safe free from brackets in the parent position. Err on the side of caution, True = don't know

Instances

Default l => Brackets (Type l) # 

Methods

remParen :: Type l -> Maybe (Type l) #

addParen :: Type l -> Type l #

isAtom :: Type l -> Bool #

needBracket :: Int -> Type l -> Type l -> Bool #

(Data l, Default l) => Brackets (Exp l) # 

Methods

remParen :: Exp l -> Maybe (Exp l) #

addParen :: Exp l -> Exp l #

isAtom :: Exp l -> Bool #

needBracket :: Int -> Exp l -> Exp l -> Bool #

Default l => Brackets (Pat l) # 

Methods

remParen :: Pat l -> Maybe (Pat l) #

addParen :: Pat l -> Pat l #

isAtom :: Pat l -> Bool #

needBracket :: Int -> Pat l -> Pat l -> Bool #

paren :: (Data l, Default l) => Exp l -> Exp l #

Add a Paren around something if it is not atomic

transformBracket :: (Data l, Default l) => (Exp l -> Maybe (Exp l)) -> Exp l -> Exp l #

rebracket1 :: (Data l, Default l) => Exp l -> Exp l #

Add/remove brackets as suggested needBracket at 1-level of depth

appsBracket :: (Data l, Default l) => [Exp l] -> Exp l #

Orphan instances