Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Documentation
class Eq v => Freshen v where Source #
A type which can be freshened has an operation which attempts to find a
unique version of its input. The principal thing that must hold is that
`freshen n /= n`. It's not necessary that `freshen n` be totally fresh with
respect to a context---that's too much to ask of a value---but it is
necessary that freshen
*eventually* produces a fresh value.
Variable identifier types must be instances of Freshen.
freshenUntil :: Freshen v => (v -> Bool) -> v -> v Source #
Freshen a variable until it can pass a given predicate.