module Control.Monad.Foil (
S(..),
Scope,
Name,
NameBinder,
emptyScope,
extendScope,
extendScopePattern,
member,
nameOf,
namesOfPattern,
nameId,
withFreshBinder,
withFresh,
withFreshPattern,
withRefreshed,
withRefreshedPattern,
withRefreshedPattern',
unsinkName,
unsinkNamePattern,
SinkableK(..),
Sinkable(..),
CoSinkable(..),
HasNameBinders(getNameBinders),
sink,
extendRenaming,
extendNameBinderRenaming,
composeNameBinderRenamings,
fromNameBinderRenaming,
extendRenamingNameBinder,
Substitution,
lookupSubst,
identitySubst,
voidSubst,
addSubst,
addSubstPattern,
addSubstList,
addRename,
UnifyNameBinders(..),
unifyNameBinders,
andThenUnifyPatterns,
andThenUnifyNameBinders,
UnifiablePattern(..),
UnifiableInPattern(..),
NameBinders,
emptyNameBinders,
mergeNameBinders,
V2, absurd2,
NameMap,
emptyNameMap,
lookupName,
addNameBinder,
nameMapToSubstitution,
addNameBinders,
addNameBinderList,
NameBinderList(..),
Ext,
ExtEvidence(..),
Distinct,
DistinctEvidence(..),
assertDistinct,
assertExt,
DExt,
InjectName(..),
) where
import Control.Monad.Foil.Internal