module Symantic.Base.Routable where import Data.Eq (Eq) import Text.Show (Show) import Symantic.Base.Composable -- * Class 'Routable' class Routable repr where x y = noTrans (unTrans x unTrans y) default () :: Transformable repr => Routable (UnTrans repr) => repr a k -> repr b k -> repr (a:!:b) k () :: repr a k -> repr b k -> repr (a:!:b) k infixr 3 -- ** Type (':!:') -- | Like @(,)@ but @infixr@. data (:!:) a b = a:!:b deriving (Eq,Show) infixr 3 :!: