{-# LANGUAGE GADTs, KindSignatures #-}
module Main (main) where
import Control.Category (Category, id, (.))
import Prelude hiding (id, (.))
data A
data B
data C
data D
data E
data Path :: * -> * -> * where
AB :: Path A B
BC :: Path B C
BD :: Path B D
CE :: Path C E
DE :: Path D E
Identity :: Path a a
Compose :: Path a b -> Path b c -> Path a c
instance Category Path where
id = Identity
(.) = flip Compose
main :: IO ()
main = return ()