The tbox package

[ Tags: concurrency, data, lgpl, library ] [ Propose Tags ]

This package provides STM data structures with IO hooks. The basic building blocks are instances of class TBox. Such an instance is an STM variable that might contain a value of some type a. In contrast to a plain 'TVar (Maybe a)', a TBox has IO hooks that are executed transparently on writes and reads. The IO hooks of the AdvSTM monad extend the atomicity of STM transactions to the on-commit IO actions, which makes it particularly suitable for implementing a persistent and thread-safe storage.

See module Control.Concurrent.TFile for a (simple) instance of a TBox that serializes its content to a file via Data.Binary.

New in this release is the implementation of a skip list in module Control.Concurrent.TBox.TSkipList. A skip list is a probabilistic data structure that provides expected run time of O(log n) for dictionary operations (insert, lookup, filter, delete, update) similar to a balanced tree. The main advantage of a skip list is that it does not need rebalancing, which could cause lots of contention among transactions. The TFile skip list instance tries to reconstruct its content from the TFile-directory. See module Control.Concurrent.TFile.TSkipList for a usage example.

Feedback is highly appreciated!


Versions 0.0.0, 0.1.0
Dependencies array (>=0.2 && <0.4), base (==4.*), binary (==0.5.*), cautious-file (>=0.1.5 && <0.2), containers (>= && <0.4), directory (>= && <1.1), filepath (==1.1.*), IfElse (>=0.85 && <1), monad-loops (>= && <, mtl (>= && <1.2), random (>= && <1.1), safe-failure (>=0.4.0 && <0.5), stm-io-hooks (>=0.6.0 && <0.7) [details]
License LGPL
Author Peter Robinson 2009, 2010
Maintainer Peter Robinson <>
Category Data, Concurrency
Home page
Uploaded Fri Apr 2 19:43:24 UTC 2010 by PeterRobinson
Distributions NixOS:0.1.0
Downloads 582 total (5 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees