Copyright | (c) 2011 Patrick Bahr, Tom Hvitved |
---|---|
License | BSD3 |
Maintainer | Tom Hvitved <hvitved@diku.dk> |
Stability | experimental |
Portability | non-portable (GHC Extensions) |
Safe Haskell | None |
Language | Haskell98 |
This module defines a monad for generating fresh, abstract names, useful e.g. for defining equality on terms.
Documentation
Monad for generating fresh (abstract) names.
Abstract notion of a name (the constructor is hidden).
withName :: (Name i -> FreshM a) -> FreshM a Source
Run the given computation with the next available name.
nameCoerce :: Name i -> Name j Source
Change the type tag of a name.
evalFreshM :: FreshM a -> a Source
Evaluate a computation that uses fresh names.