-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Object-oriented programming with singleton methods and duck typing. -- -- This package provides Object-oriented programming found in -- dynamically-typed languages such as python or ruby. -- -- Object is implemented as Map from method keys to -- values. Different keys can have different value types @package dynamic-object @version 0.1.0.0 module Data.Object.Dynamic.Types -- | A basic object type that can contain values of different types. newtype Object Object :: (Map TypeRep Dynamic) -> Object class Typeable a => KeyType a where type family ValType a :: * -- | A Type synonym for a Member Lens. type Member kt = Lens Object Object (Maybe (ValType kt)) (Maybe (ValType kt)) -- | an empty Object . -- --
--   >>> empty
--   Object []
--   
empty :: Object -- | Given a key type, create a Member Lens labeled by the -- key. Here's an example of creating a price tag for objects. -- --
--   >>> data Price = Price deriving (Show, Typeable)
--   
--   >>> instance KeyType Price where type ValType Price = Integer
--   
--   >>> let price :: Member Price; price = mkMember Price;
--   
--   >>> let x = set price (Just 120) empty
--   
--   >>> view price empty
--   Nothing
--   
--   >>> view price x
--   Just 120
--   
mkMember :: (KeyType kt, Typeable (ValType kt)) => kt -> Member kt -- | Create a Member Lens with a default value. Here's a -- price tag for objects with default value. -- --
--   >>> data Price = Price deriving (Show, Typeable)
--   
--   >>> instance KeyType Price where type ValType Price = Integer
--   
--   >>> let price :: Member Price; price = mkMemberWithDef Price 10;
--   
--   >>> let x = set price (Just 120) empty
--   
--   >>> view price empty
--   Just 10
--   
--   >>> view price x
--   Just 120
--   
mkMemberWithDef :: (KeyType kt, Typeable (ValType kt)) => kt -> ValType kt -> Member kt instance Typeable Object instance Show Object module Data.Object.Dynamic -- | A basic object type that can contain values of different types. data Object -- | an empty Object . -- --
--   >>> empty
--   Object []
--   
empty :: Object