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 scope-aware 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 newtype-wrapped 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 | |
|