Copyright | (c) Christian Maeder and Uni Bremen 2007 |
---|---|
License | GPLv2 or higher, see LICENSE.txt |
Maintainer | Christian.Maeder@dfki.de |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe |
folding types
Synopsis
- data FoldTypeRec a = FoldTypeRec {
- foldTypeName :: Type -> Id -> RawKind -> Int -> a
- foldTypeAppl :: Type -> a -> a -> a
- foldExpandedType :: Type -> a -> a -> a
- foldTypeAbs :: Type -> TypeArg -> a -> Range -> a
- foldKindedType :: Type -> a -> Set Kind -> Range -> a
- foldTypeToken :: Type -> Token -> a
- foldBracketType :: Type -> BracketKind -> [a] -> Range -> a
- foldMixfixType :: Type -> [a] -> a
- mapTypeRec :: FoldTypeRec Type
- foldType :: FoldTypeRec a -> Type -> a
- replAlias :: (Id -> RawKind -> Int -> Type) -> Type -> Type
- leaves :: (Int -> Bool) -> Type -> [(Int, (Id, RawKind))]
- freeTVars :: Type -> [(Int, (Id, RawKind))]
- freeTVarIds :: Type -> [Id]
Documentation
data FoldTypeRec a Source #
FoldTypeRec | |
|
foldType :: FoldTypeRec a -> Type -> a Source #
replAlias :: (Id -> RawKind -> Int -> Type) -> Type -> Type Source #
recursively substitute type alias names within a type
leaves :: (Int -> Bool) -> Type -> [(Int, (Id, RawKind))] Source #
the type name components of a type
freeTVars :: Type -> [(Int, (Id, RawKind))] Source #
uninstantiate, non-generalized, unknown type variables
freeTVarIds :: Type -> [Id] Source #