-- 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)