Orthogonal Persistence in Haskell, was: Re: [Haskell-cafe] To yi or not to yi, is this really the question? A plea for a cooperative, ubiquitous, distributed integrated development system.

Pasqualino 'Titto' Assini tittoassini at gmail.com
Wed Jun 20 03:30:28 EDT 2007


On Monday 18 June 2007 23:45:23 Claus Reinke wrote:

> > Have you checked the prevayler-inspired approach implemented in HAppS ?
>
> no, do you have a reference? but i meant "orthogonal persistence", as in
> all program parts can persist, including functions, thunks, types,.. once
> you start going down that route, the rigid globally static/dynamic
> distinction quickly becomes meaningless (instead one has locally
> static/dynamic phases of evaluating program parts, ie, one does a dynamic
> type check in each static phase, and if that succeeds, the immediately
> following dynamic phase will be type correct without further "runtime" type
> checks).

Prevayler: http://www.prevayler.org/wiki/

HAppS: http://happs.org (look for the MACID monad)

Prevayler is an efficient and very simple way of providing application state 
persistency. 

Essentially:
- all the state is kept in memory, in native language data structures 
- whenever a write transaction is performed the system automatically 
serialises a description of the transaction so that it can be replayed later.
- occasionally the whole state can be serialised to produce a snapshot
- when the system restarts it reads in the last snapshot and replays all 
transaction since the last snapshot.

Is this orthogonal persistence? 

I guess it would be, if you never took any snapshot. 

Snapshots are limited by what can be serialised in the language.

But transactions might be serialisable even if the state they produce isn't 
(because, say, includes arbitrary functions).

Best,

      titto




More information about the Haskell-Cafe mailing list