{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE DefaultSignatures #-}
module OAlg.Hom.Algebraic
(
HomAlgebraic
)
where
import Data.Typeable
import OAlg.Prelude
import OAlg.Category.Path
import OAlg.Structure.Algebraic.Definition
import OAlg.Hom.Definition
import OAlg.Hom.Oriented.Definition
import OAlg.Hom.Distributive
import OAlg.Hom.Vectorial
class (EmbeddableMorphism h (Alg k), HomDistributive h, HomVectorial k h)
=> HomAlgebraic k h
instance HomAlgebraic k h => HomAlgebraic k (Path h)
type instance Hom (Alg k) h = HomAlgebraic k h
instance ( TransformableOp (s k), ForgetfulAlg k s, ForgetfulTyp (s k)
, Typeable s, Typeable k
)
=> HomAlgebraic k (IdHom (s k))