module Symantic.Dityped.Routable where import Data.Eq (Eq) import Text.Show (Show) import Symantic.Dityped.Transformable -- * Class 'Routable' class Routable repr where () :: repr a k -> repr b k -> repr (a:!:b) k () = lift2 () default () :: Liftable2 repr => Routable (Unlifted repr) => 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 :!: