packages feed

pandora-0.1.8: Pandora/Paradigm/Junction/Transformer.hs

module Pandora.Paradigm.Junction.Transformer (Transformer (..)) where

import Pandora.Pattern.Functor.Covariant (Covariant)
import Pandora.Pattern.Functor.Pointable (Pointable)

class Transformer t where
	{-# MINIMAL lay, equip #-}
	type Layout (t :: * -> *) (u :: * -> *) (a :: *) = r | r -> t u
	lay :: Covariant u => u a -> Layout t u a
	equip :: Pointable u => t a -> Layout t u a