The storable-record package

[ Tags: bsd3, data, foreign, library ] [ Propose Tags ]

With this package you can build a Storable instance of a record type from Storable instances of its elements in an elegant way. It does not do any magic, just a bit arithmetic to compute the right offsets, that would be otherwise done manually or by a preprocessor like C2HS. I cannot promise that the generated memory layout is compatible with that of a corresponding C struct. However, the module generates the smallest layout that is possible with respect to the alignment of the record elements. If you encounter, that a record does not have a compatible layout, we should fix that. But also without C compatibility this package is useful e.g. in connection with StorableVector.

We provide Storable instance support for several cases:

Note however that the Storable instances defined with this package are quite slow in (up to) GHC-6.12.1. I'm afraid this is due to incomplete inlining, but we have still to investigate the problem.

For examples see packages storable-tuple and sample-frame.


Versions 0.0.1, 0.0.2,,,,,, 0.0.3,, 0.0.4
Dependencies base (>=1.0 && <2 || >=3 && <6), special-functors (==1.0.*), transformers (>=0.0.1 && <0.2), utility-ht (>=0.0.1 && <0.1) [details]
License BSD3
Author Henning Thielemann <>
Maintainer Henning Thielemann <>
Category Data, Foreign
Home page
Source repo head: darcs get
this: darcs get --tag 0.0.2
Uploaded Tue May 4 14:41:04 UTC 2010 by HenningThielemann
Distributions Arch:0.0.4, LTSHaskell:0.0.4, NixOS:0.0.4, Stackage:0.0.4, openSUSE:0.0.4
Downloads 7189 total (202 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI





Choose the new smaller, split-up base package.


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees