| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Unison.ABT.Normalized
Documentation
data Term (f :: Type -> Type -> Type) v Source #
Bundled Patterns
| pattern TAbs :: Var v => v -> Term f v -> Term f v | |
| pattern TTm :: (Var v, Bifoldable f) => f v (Term f v) -> Term f v | |
| pattern TAbss :: Var v => [v] -> Term f v -> Term f v |
class (Bifoldable f, Bifunctor f) => Align (f :: Type -> Type -> Type) where Source #
Methods
align :: Applicative g => (vl -> vr -> g vs) -> (el -> er -> g es) -> f vl el -> f vr er -> Maybe (g (f vs es)) Source #
alpha :: forall (f :: Type -> Type -> Type) v. (Align f, Var v) => Map v v -> Term f v -> Term f v -> Either (Term f v, Term f v) () Source #
freshen :: forall v (f :: Type -> Type -> Type). (Var v, Bifunctor f, Bifoldable f) => Set v -> Term f v -> Term f v Source #
isEmptyRenaming :: Renaming v -> Bool Source #
renames :: forall v (f :: Type -> Type -> Type). (Var v, Bifunctor f, Bifoldable f) => Map v v -> Term f v -> Term f v Source #
renamesAvoiding :: forall v (f :: Type -> Type -> Type). (Var v, Bifunctor f, Bifoldable f) => Set v -> Map v v -> Term f v -> Term f v Source #
renamesAndFreshen0 :: forall v (f :: Type -> Type -> Type). (Var v, Bifunctor f, Bifoldable f) => Renaming v -> Term f v -> Term f v Source #
rename :: forall v (f :: Type -> Type -> Type). (Var v, Ord v, Bifunctor f, Bifoldable f) => v -> v -> Term f v -> Term f v Source #
transform :: (Var v, Bifunctor g, Bifoldable f, Bifoldable g) => (forall a b. f a b -> g a b) -> Term f v -> Term g v Source #
visit :: forall g (f :: Type -> Type -> Type) v. (Applicative g, Bifoldable f, Traversable (f v), Var v) => (Term f v -> Maybe (g (Term f v))) -> Term f v -> g (Term f v) Source #