Copyright | (c) 2013-2015 Galois, Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
- data TyDecl
- orderTyDecls :: [TyDecl] -> InferM [TyDecl]
- orderBinds :: [Bind] -> [SCC Bind]
- class FromDecl d where
- mkScc :: [(a, [QName], [QName])] -> [SCC a]
- combineMaps :: [Map QName (Located a)] -> InferM (Map QName (Located a))
- combine :: [(QName, Located a)] -> InferM (Map QName (Located a))
- duplicates :: Ord a => [Located a] -> [(a, [Range])]
Documentation
orderTyDecls :: [TyDecl] -> InferM [TyDecl] Source
Check for duplicate and recursive type synonyms. Returns the type-synonyms in dependecy order.
orderBinds :: [Bind] -> [SCC Bind] Source
Associate type signatures with bindings and order bindings by dependency.
mkScc :: [(a, [QName], [QName])] -> [SCC a] Source
Given a list of declarations, annoted with (i) the names that they define, and (ii) the names that they use, we compute a list of strongly connected components of the declarations. The SCCs are in dependency order.
combineMaps :: [Map QName (Located a)] -> InferM (Map QName (Located a)) Source
Combine a bunch of definitions into a single map. Here we check that each name is defined only onces.
combine :: [(QName, Located a)] -> InferM (Map QName (Located a)) Source
Combine a bunch of definitions into a single map. Here we check that each name is defined only onces.
duplicates :: Ord a => [Located a] -> [(a, [Range])] Source
Identify multiple occurances of something.