---------- Forwarded message ----------
From: Alberto G. Corona <agocorona@gmail.com>
Date: 2008/10/29
Subject: Re: [Haskell-cafe] ANNOUNCE: Data.TCache 0.5.1
To: Joachim Breitner <mail@joachim-breitner.de>


I developed it in 2006. At this time I think that Happs did not used STM. I do not know Happs.State very well. The main difference is that it is far far simple (only a handfull of methods exported) it is configurable and permit the full semantic of TVars without loosing content persistence.  Also, the query is based on letīs say patterns. A pattern is a partilally filled object. enough to deduce the key. the interface is very natural. For example:


withResources [ User{ name= "Alberto"} , Product{ id="Playstation"}  buyIt
  where
  buyIt [Just user, Just product]=  [user{due= due user +price product}, product{ stock= stock product -1]]
  buyIt _ = error "either the user or the product not found"

Just prod <- getResource Product{ id="Playstation"}

bla bla bla

2008/10/29 Joachim Breitner <mail@joachim-breitner.de>
Hi,

Am Dienstag, den 28.10.2008, 23:26 +0100 schrieb Alberto G. Corona :
> Data.Tcache is a transactional cache with configurable persistence. It
> tries to simulate Hibernate for Java or Rails for Ruby. The main
> difference is that transactions are done in memory trough STM. There
> are transactional cache implementations for some J2EE servers like
> JBOSS.
>
> TCache uses STM . It can  atomically apply a function to a list of
> cached objects. The resulting objects go back to the cache
> (withResources). It also can retrieve these objects (getResources).
> Persistence can be syncronous (syncCache)  or asyncronous, wtih
> configurable time between cache writes and configurable cache
> clearance strategy. the size of the cache can be configured too . All
> of this can be done trough clearSyncCacheProc. Even the TVar variables
> can be accessed directly (getTVar) to acceess all the semantic of
> atomic blocks while maintaining the persistence of the TVar updates.
>
> Persistence can be defined for each object.: Each object must have a
> defined key, a default filename path (if applicable). Persistence is
> pre-defined in files, but the readResource writeResource and
> delResource methods can be redefined to persist in databases or
> whatever.

Interesting. Without much deep knowledge, this sounds similar to
HAppS.State. Where are the differences?

Greetings,
Joachim

--
Joachim "nomeata" Breitner
 mail: mail@joachim-breitner.de | ICQ# 74513189 | GPG-Key: 4743206C
 JID: nomeata@joachim-breitner.de | http://www.joachim-breitner.de/
 Debian Developer: nomeata@debian.org

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe