-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Generic Haskell's Record Accessors
--
-- Usage: http://github.com/nonowarn/has/blob/master/README.md
--
-- And its test would be helpful:
-- http://github.com/nonowarn/has/blob/master/test/Main.hs
@package has
@version 0.2
-- | Provides some pliant data types and functions.
module Data.Has
-- | Represents Type level list.
data (:*:) a b
(:*:) :: a -> b -> :*: a b
-- | Provides plient function. Holds e == prj (inj e s) for all
-- s and e.
class Has e s
inj :: (Has e s) => e -> s -> s
prj :: (Has e s) => s -> e
-- | Updates a value e in s, using given function e
-- -> e.
upd :: (Has e s) => (e -> e) -> s -> s
instance [overlap ok] (MayHas e s, Contains e s TyTrue) => Has e s