packages feed

prototype 0.5.0 → 0.5.3

raw patch · 2 files changed

+25/−3 lines, 2 files

Files

prototype.cabal view
@@ -2,7 +2,7 @@ cabal-version:	>= 1.2  name:		prototype-version:	0.5.0+version:	0.5.3 stability:	experimental author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -25,7 +25,7 @@ 		> import Control.Prototype 		> 		> main :: IO ()-		> main = fmap fst $ flip runProt initProtEnv $ do+		> main = flip evalProt initProtEnv $ do 		>	( dog, setName, sit ) <- package "dog" $ do 		>		dog <- clone object 		>		name	<- makeMember "name"
src/Control/Prototype.hs view
@@ -8,6 +8,8 @@ 	Method,  	runProt,+	evalProt,+	execProt, 	initProtEnv, 	package, 	object,@@ -15,12 +17,15 @@ 	makeMember, 	setMember, 	member,+	makeMethod, 	setMethod, 	method,  	liftProt,+	primBool, 	primInt, 	primStr,+	fromPrimBool, 	fromPrimInt, 	fromPrimStr, @@ -29,7 +34,8 @@  import Prelude hiding ( head ) import "monads-tf" Control.Monad.State (-	StateT, runStateT, lift, MonadIO, liftIO, put, get, gets )+	StateT, runStateT, evalStateT, execStateT,+	lift, MonadIO, liftIO, put, get, gets ) import Data.List ( (\\) ) import Data.Maybe ( fromMaybe, listToMaybe ) @@ -46,6 +52,12 @@ runProt :: Monad m => Prot m a -> ProtEnv m -> m ( a, ProtEnv m ) runProt = runStateT +evalProt :: Monad m => Prot m a -> ProtEnv m -> m a+evalProt = evalStateT++execProt :: Monad m => Prot m a -> ProtEnv m -> m ( ProtEnv m )+execProt = execStateT+ liftProt :: Monad m => m a -> Prot m a liftProt = lift @@ -62,10 +74,14 @@  data Object = 	ObjectId { fromObjId :: Int } |+	PrimitiveBool { fromPrimBool :: Bool } | 	PrimitiveInt { fromPrimInt :: Int } | 	PrimitiveString { fromPrimStr :: String } 	deriving ( Eq, Show ) +primBool :: Bool -> Object+primBool = PrimitiveBool+ primInt :: Int -> Object primInt = PrimitiveInt @@ -133,6 +149,12 @@ setMember obj mn val = do 	objBody@ObjectBody { objectMembers = mems } <- getObject obj 	putObject objBody { objectMembers = ( mn, val ) : mems }++makeMethod :: Monad m => Method m -> Prot m Object+makeMethod met = do+	newId <- getNewId+	putObject $ Method newId met+	return newId  setMethod :: Monad m => Object -> Member -> Method m -> Prot m () setMethod obj mem met = do