-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Haskell 98 Groupoids
--   
--   Haskell 98 Groupoids
@package groupoids
@version 3.0.1.1

module Data.Groupoid

-- | semigroupoid with inverses. This technically should be a category with
--   inverses, except we need to use Ob to define the valid objects for the
--   category
class Semigroupoid k => Groupoid k
inv :: Groupoid k => k a b -> k b a
instance Groupoid k => Groupoid (Dual k)

module Data.Isomorphism
data Iso k a b
Iso :: k a b -> k b a -> Iso k a b
embed :: Iso k a b -> k a b
project :: Iso k a b -> k b a
instance Category k => Category (Iso k)
instance Semigroupoid k => Groupoid (Iso k)
instance Semigroupoid k => Semigroupoid (Iso k)
