Thanks everybody for advice!
I'll try to clarify what I mean by persistence and concurrent access that preserves "happens-before" relationship.
1) Persistence - imagine Haskell run-time executing in infinite physical memory. My idea is to implement really huge, "almost infinite memory" in the cloud of one or another type. Nothing more nothing less, nothing imperative, exactly the same environment that GHC runtime works today, but extended to huge virtual memory in the cloud.
2) Concurrent access that preserves "happens-before" relationship. Before talking about transactions, I would use locking data structures in two different ways:
- Optimistic lock - everybody can read and write / delete simultaneously, system ensures only "happens-before" relationship. In other words Best Effort Modification - you can try to modify data, but there is no guarantee that your modification will work.
- Pessimistic lock - when you get lock - structure is all yours as long as you held the lock - everybody else can only read, "happens-before" relationship is ensured at all times.
About "happens-before" relationship:
http://en.wikipedia.org/wiki/Happened-before