<br><br>
<div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Alberto G. Corona</b> <span dir="ltr">&lt;<a href="mailto:agocorona@gmail.com">agocorona@gmail.com</a>&gt;</span><br>Date: 2008/10/29<br>
Subject: Re: [Haskell-cafe] ANNOUNCE: Data.TCache 0.5.1<br>To: Joachim Breitner &lt;<a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a>&gt;<br><br><br>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.&nbsp; 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:<br>
<br><br>withResources [ User{ name= &quot;Alberto&quot;} , Product{ id=&quot;Playstation&quot;}&nbsp; buyIt<br>&nbsp; where<br>&nbsp; buyIt [Just user, Just product]=&nbsp; [user{due= due user +price product}, product{ stock= stock product -1]]<br>
&nbsp; buyIt _ = error &quot;either the user or the product not found&quot;<br><br>Just prod &lt;- getResource Product{ id=&quot;Playstation&quot;}<br><br>bla bla bla<br><br>
<div class="gmail_quote">2008/10/29 Joachim Breitner <span dir="ltr">&lt;<a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a>&gt;</span><br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
<div>
<div></div>
<div class="Wj3C7c">Hi,<br><br>Am Dienstag, den 28.10.2008, 23:26 +0100 schrieb Alberto G. Corona :<br>
<div>
<div></div>
<div>&gt; Data.Tcache is a transactional cache with configurable persistence. It<br>&gt; tries to simulate Hibernate for Java or Rails for Ruby. The main<br>&gt; difference is that transactions are done in memory trough STM. There<br>
&gt; are transactional cache implementations for some J2EE servers like<br>&gt; JBOSS.<br>&gt;<br>&gt; TCache uses STM . It can &nbsp;atomically apply a function to a list of<br>&gt; cached objects. The resulting objects go back to the cache<br>
&gt; (withResources). It also can retrieve these objects (getResources).<br>&gt; Persistence can be syncronous (syncCache) &nbsp;or asyncronous, wtih<br>&gt; configurable time between cache writes and configurable cache<br>&gt; clearance strategy. the size of the cache can be configured too . All<br>
&gt; of this can be done trough clearSyncCacheProc. Even the TVar variables<br>&gt; can be accessed directly (getTVar) to acceess all the semantic of<br>&gt; atomic blocks while maintaining the persistence of the TVar updates.<br>
&gt;<br>&gt; Persistence can be defined for each object.: Each object must have a<br>&gt; defined key, a default filename path (if applicable). Persistence is<br>&gt; pre-defined in files, but the readResource writeResource and<br>
&gt; delResource methods can be redefined to persist in databases or<br>&gt; whatever.<br><br></div></div>Interesting. Without much deep knowledge, this sounds similar to<br>HAppS.State. Where are the differences?<br><br>
Greetings,<br>Joachim<br><font color="#888888"><br>--<br>Joachim &quot;nomeata&quot; Breitner<br>&nbsp;mail: <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a> | ICQ# 74513189 | GPG-Key: 4743206C<br>
&nbsp;JID: <a href="mailto:nomeata@joachim-breitner.de" target="_blank">nomeata@joachim-breitner.de</a> | <a href="http://www.joachim-breitner.de/" target="_blank">http://www.joachim-breitner.de/</a><br>&nbsp;Debian Developer: <a href="mailto:nomeata@debian.org" target="_blank">nomeata@debian.org</a><br>
</font><br></div></div>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div><br>