Safe Haskell | Safe-Infered |
---|
- class Indexable a where
- class Serializable a | a -> where
- serialize :: a -> ByteString
- deserialize :: ByteString -> a
- setPersist :: a -> Persist
- defaultPersist :: Persist
- data Persist = Persist {}
Documentation
Indexable is an utility class used to derive instances of IResource
Example:
data Person= Person{ pname :: String, cars :: [DBRef Car]} deriving (Show, Read, Typeable) data Car= Car{owner :: DBRef Person , cname:: String} deriving (Show, Read, Eq, Typeable)
Since Person and Car are instances of Read
ans Show
, by defining the Indexable
instance
will implicitly define the IResource instance for file persistence:
instance Indexable Person where key Person{pname=n} = "Person " ++ n instance Indexable Car where key Car{cname= n} = "Car " ++ n
class Serializable a | a -> whereSource
Serialize is an abstract serialization ionterface in order to define implicit instances of IResource. The deserialization must be as lazy as possible if deserialized objects contain DBRefs, lazy deserialization avoid unnecesary DBRef instantiations when they are not accessed, since DBRefs instantiations involve extra cache lookups For this reason serializationdeserialization is tofrom ordinary Strings serialization/deserialization are not performance critical in TCache
Read, Show, instances are implicit instances of Serializable
serialize = show deserialize= read
Since write and read to disk of to/from the cache must not be very often The performance of serialization is not critical.
serialize :: a -> ByteStringSource
deserialize :: ByteString -> aSource
setPersist :: a -> PersistSource
Serializable IndexText | |
Queriable reg a => Serializable (Index reg a) |