markup-1.0.0: src/Data/Markup/Class.hs
{-# LANGUAGE
FlexibleContexts
, FlexibleInstances
, KindSignatures
, MultiParamTypeClasses
, UndecidableInstances
#-}
module Data.Markup.Class where
import Data.Markup.Types
import Control.Comonad
-- | Overload assets and their markup library, over some deployment
class Deploy symbol input markup (m :: * -> *) where
deploy :: symbol -> input -> m markup
-- | Overload extraction of (co)monad
class Markup (m :: * -> *) where
renderMarkup :: m a -> a
toMarkup :: a -> m a
instance (Monad m, Comonad m) => Markup m where
renderMarkup = extract
toMarkup = return