-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | prototype-based programming on Haskell -- -- prototype-based programming on Haskell -- -- You can download source codes by git. -- -- git clone git://github.com/YoshikuniJujo/prototype.git prototype -- -- Example code -- --
--   module Main where
--   
--   import Control.Prototype
--   
--   main :: IO ()
--   main = flip evalProt initProtEnv $ do
--   ( dog, setName, sit ) <- package "dog" $ do
--   	dog <- clone object
--   	name	<- makeMember "name"
--   	setName	<- makeMember "setName"
--   	sit	<- makeMember "sit"
--   	setMethod dog setName $ \this [ n ] -> do
--   		setMember this name n
--   		return [ ]
--   	setMethod dog sit $ \this _ -> do
--   		n <- member this name
--   		liftProt $ putStrLn $ fromPrimStr n ++ " sitting."
--   		return [ ]
--   	return ( dog, setName, sit )
--   myDog <- clone dog
--   method myDog setName [ primStr "John" ]
--   method myDog sit [ ]
--   return ()
--   
-- -- Another sample -- --
--   module Main where
--   
--   import MyToolkit
--   
--   main :: IO ()
--   main = runToolKit $ do
--   ( textView, setText, setContentView ) <- importMyToolkit
--   myTV <- clone textView
--   method myTV setText [ primStr "Hello, world!" ]
--   method myTV setContentView [ ]
--   return ()
--   
@package prototype @version 0.5.3 module Control.Prototype type Prot m = StateT (ProtEnv m) m data ProtEnv m data Object data Member type Method m = Object -> [Object] -> Prot m [Object] runProt :: Monad m => Prot m a -> ProtEnv m -> m (a, ProtEnv m) evalProt :: Monad m => Prot m a -> ProtEnv m -> m a execProt :: Monad m => Prot m a -> ProtEnv m -> m (ProtEnv m) initProtEnv :: ProtEnv m package :: Monad m => String -> Prot m a -> Prot m a object :: Object clone :: Monad m => Object -> Prot m Object makeMember :: Monad m => String -> Prot m Member setMember :: Monad m => Object -> Member -> Object -> Prot m () member :: Monad m => Object -> Member -> Prot m Object makeMethod :: Monad m => Method m -> Prot m Object setMethod :: Monad m => Object -> Member -> Method m -> Prot m () method :: Monad m => Object -> Member -> [Object] -> Prot m [Object] liftProt :: Monad m => m a -> Prot m a primBool :: Bool -> Object primInt :: Int -> Object primStr :: String -> Object fromPrimBool :: Object -> Bool fromPrimInt :: Object -> Int fromPrimStr :: Object -> String printMember :: MonadIO m => Member -> m () instance Eq Object instance Show Object instance Eq Member instance Show Member instance Show (ProtEnv m) instance Show (ObjectBody m)