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,
Dependencies base (>=1.0 && <2 || >=3 && <6), special-functors (==1.0.*), transformers (==0.2.*), utility-ht (>=0.0.1 && <0.1) [details]
License BSD3
Author Henning Thielemann <>
Maintainer Henning Thielemann <>
Category Data, Foreign
Home page
Source repository head: darcs get
this: darcs get --tag
Uploaded Sun Jun 13 19:18:52 UTC 2010 by HenningThielemann
Distributions LTSHaskell:, NixOS:, Stackage:, Tumbleweed:
Downloads 5166 total (93 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





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