{-# LANGUAGE ExistentialQuantification #-}

module Control.Arrow.Transformer where

import Control.Arrow;

class ArrowTransformer xT where {
  lift :: Arrow r => r a b -> xT r a b;
  tmap :: (Arrow r, Arrow s) => ( a b . r a b -> s a b) -> xT r a b -> xT s a b;
};