Safe Haskell  None 

Language  Haskell2010 
 class Typeable a => Resolvable a where
 rtraverse :: (Applicative f, ?alg :: Alg f) => a > Scope > f a
 newtype Alg w = Alg {
 runAlg :: forall d. Resolvable d => d > Scope > w d
 rmap :: Resolvable a => (forall b. Resolvable b => Scope > b > b) > Scope > a > a
 rfoldMap :: (Monoid r, Resolvable a) => (forall b. Resolvable b => Scope > b > r) > Scope > a > r
 data Scope
 data NameContext
 initialScope :: Table > Scope
 gTable :: Lens Scope Table
 lTable :: Lens Scope Table
 nameCtx :: Lens Scope NameContext
 type WcNames = [WcField]
 data WcField = WcField {}
 wcNames :: Lens Scope WcNames
Documentation
class Typeable a => Resolvable a where Source
A type that implements Resolvable
provides a way to perform
a shallow scopeaware traversal.
rtraverse :: (Applicative f, ?alg :: Alg f) => a > Scope > f a Source
(Typeable * a, GTraversable Resolvable a) => Resolvable a  
Resolvable SrcSpan  
Resolvable SrcSpanInfo  
(Resolvable l, SrcInfo l, Data l) => Resolvable [Stmt l]  
(Resolvable l, SrcInfo l, Data l) => Resolvable (Decl l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (DeclHead l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (Binds l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (Match l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (ConDecl l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (FieldDecl l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (GuardedRhs l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (Type l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (Exp l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (Pat l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (PatField l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (QualStmt l)  
(Resolvable l, SrcInfo l, Data l) => Resolvable (Alt l)  
Typeable * a => Resolvable (Scoped a) 
The algebra for rtraverse
. It's newtypewrapped because an implicit
parameter cannot be polymorphic.
Alg  

rmap :: Resolvable a => (forall b. Resolvable b => Scope > b > b) > Scope > a > a Source
Analogous to gmap
, but for Resolvable
rfoldMap :: (Monoid r, Resolvable a) => (forall b. Resolvable b => Scope > b > r) > Scope > a > r Source
Analogous to gmap
, but for Resolvable
data NameContext Source
Describes how we should treat names in the current context
initialScope :: Table > Scope Source
Create an initial scope
type WcNames = [WcField] Source
Information about the names being introduced by a record wildcard
During resolving traversal, we always (lazily) construct this list when we process PRec or RecConstr, even if it doesn't contain a wildcard.
Then, if the pattern or construction actually contains a wildcard, we use the computed value.
Information about a field in the wildcard
WcField  
