pandora-0.4.4: Pandora/Pattern/Functor/Extendable.hs
module Pandora.Pattern.Functor.Extendable where
import Pandora.Core.Functor (type (:.), type (:=))
import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), Covariant_)
infixr 1 <<=
{- |
> When providing a new instance, you should ensure it satisfies:
> * Duplication interchange: (f -<$$>-) . (identity <<=) ≡ (identity <<=) . (f -<$>-)
> * Extension interchange: (f <<=) ≡ (f -<$>-) . (identity <<=)
-}
class Covariant_ t source source => Extendable t source where
(<<=) :: source (t a) b -> source (t a) (t b)