-- 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 = fmap fst $ flip runPT initPTEnv $ 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 -- liftPT $ putStrLn $ fromPrimStr n ++ " sitting." -- return [ ] -- 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.3 module Control.Prototype type PTMonad m = StateT (PTEnv m) m data Object data Member type Method m = Object -> [Object] -> PTMonad m [Object] runPT :: Monad m => PTMonad m a -> PTEnv m -> m (a, PTEnv m) initPTEnv :: PTEnv m object :: Object clone :: Monad m => Object -> PTMonad m Object makeMember :: Monad m => String -> PTMonad m Member member :: Monad m => Object -> Member -> PTMonad m Object method :: Monad m => Object -> Member -> [Object] -> PTMonad m [Object] setMember :: Monad m => Object -> Member -> Object -> PTMonad m () setMethod :: Monad m => Object -> Member -> Method m -> PTMonad m () liftPT :: Monad m => m a -> PTMonad m a primInt :: Int -> Object primStr :: String -> Object fromPrimInt :: Object -> Int fromPrimStr :: Object -> String printMemberName :: MonadIO m => Member -> m () instance Eq Object instance Show Object instance Eq Member instance Show Member instance Show (ObjectBody m)