module Sample
where
import Control.Monad( when )
import Data.TStorage
import Data.TMap
import Data.TMap.Backend.StdoutBackend
import qualified Data.CacheStructure.LRU as C
import Control.Concurrent.AdvSTM
import qualified Control.Exception as Exc
import qualified Data.Edison.Assoc.StandardMap as M
import Prelude hiding( lookup )
data Sometype = Sometype { theid :: Int, name :: String }
deriving (Show,Eq,Ord)
instance HasKey Sometype Int where
key = theid
sample :: IO ()
sample = Exc.handle (\(e::Exc.SomeException) -> print e) $ do
tmap <- newTMapIO newStdoutBackend (Just 4)
:: IO (TMap (M.FM Int) Int Sometype StdoutBackend C.LRU)
res <- atomically $ do
insert 1 (Sometype 1 "somename") tmap
insert 2 (Sometype 2 "somename2") tmap
insert 3 (Sometype 3 "somename3") tmap
insert 4 (Sometype 4 "somename4") tmap
insert 5 (Sometype 5 "somename5") tmap
insert 6 (Sometype 6 "somename6") tmap
lookup 2 tmap
delete 2 tmap
lookup 2 tmap
atomically $ purgeTMap tmap
print ("Result1: ",res)
res2 <- atomically $ do
add (Sometype 7 "somename7") tmap
v1 <- apply (\s -> s{name="_"}) (Sometype {theid = 4}) tmap
v2 <- complete (Sometype {theid = 5}) tmap
return (v1,v2)
print ("Result2: ",res2)
test :: IO ()
test = do
tmap <- newTMapIO newStdoutBackend (Just 4)
:: IO (TMap (M.FM Int) Int String StdoutBackend C.LRU)
atomically $ do
isMemb <- member 1 tmap
when (not isMemb) $
insert 1 "john doe" tmap
atomically $ do
v <- lookup 1 tmap
adjust (\_ -> "jd") 1 tmap