Copyright | (c) 2011 Patrick Bahr Tom Hvitved |
---|---|
License | BSD3 |
Maintainer | Tom Hvitved <[email protected]> |
Stability | experimental |
Portability | non-portable (GHC Extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Data.Comp.Multi.Desugar
Description
This modules defines the Desugar
type class for desugaring of terms.
Synopsis
- class (HFunctor f, HFunctor g) => Desugar (f :: (Type -> Type) -> Type -> Type) (g :: (Type -> Type) -> Type -> Type) where
- desugar :: forall (f :: (Type -> Type) -> Type -> Type) (g :: (Type -> Type) -> Type -> Type). Desugar f g => Term f :-> Term g
- desugarA :: forall (f' :: (Type -> Type) -> Type -> Type) (g' :: (Type -> Type) -> Type -> Type) (f :: (Type -> Type) -> Type -> Type) p (g :: (Type -> Type) -> Type -> Type). (HFunctor f', HFunctor g', DistAnn f p f', DistAnn g p g', Desugar f g) => Term f' :-> Term g'
Documentation
class (HFunctor f, HFunctor g) => Desugar (f :: (Type -> Type) -> Type -> Type) (g :: (Type -> Type) -> Type -> Type) where Source #
The desugaring term homomorphism.
Minimal complete definition
Nothing
desugar :: forall (f :: (Type -> Type) -> Type -> Type) (g :: (Type -> Type) -> Type -> Type). Desugar f g => Term f :-> Term g Source #
Desugar a term.
desugarA :: forall (f' :: (Type -> Type) -> Type -> Type) (g' :: (Type -> Type) -> Type -> Type) (f :: (Type -> Type) -> Type -> Type) p (g :: (Type -> Type) -> Type -> Type). (HFunctor f', HFunctor g', DistAnn f p f', DistAnn g p g', Desugar f g) => Term f' :-> Term g' Source #
Lift desugaring to annotated terms.