ACM Home Page
Please provide us with feedback. Feedback
The bits between the lambdas: binary data in a lazy functional language
Full text PdfPdf (1.56 MB)
Source International Symposium on Memory Management archive
Proceedings of the 1st international symposium on Memory management table of contents
Vancouver, British Columbia, Canada
Pages: 107 - 117  
Year of Publication: 1998
ISBN:1-58113-114-3
Also published in ...
Authors
Malcolm Wallace  Dept of Computer Science, University of York, UK
Colin Runciman  Dept of Computer Science, University of York, UK
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 2,   Downloads (12 Months): 20,   Citation Count: 3
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/286860.286872
What is a DOI?

ABSTRACT

For the programmer, storage media are usually assumed to have a minimum atomic unit of transfer of one byte. However, sometimes it is useful to have an even finer storage granularity of one bit, for instance in order to compress data.This paper describes an API in the lazy functional language Haskell for treating storage media as arbitrary-length streams of bits without byte-alignment constraints. So far as possible, storage media are treated uniformly. In particular, bit-stream memory and binary files share the same API -- a new and useful abstraction over memory management and file management. This uniformity of access leads to a novel technique for lazy random-access to files in a purely functional manner. We also describe a technique for automatically deriving compressed binary representations of user-defined data structures, whose operations provide both in-heap data compression and convenient high-level binary I/O.Of many possible applications, we illustrate the processing of Huffman-encoded image data, and a bibliographic information system which uses lazy B-trees for efficient storage management.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
2
 
3
N. RSjemo et al. nhcl3 Haskell compiler, York release, http://www, cs. york. ac. uk/fp/nhc13//, Dept. of Computer Science, University of York, UK, May 1998.
 
4
Jeroen Fokker. Functional specification of JPEG decompression and an implementation for free. In Veltkamp and Blake, editors, Programming Paradigms in Graphics, Proceedings of Eurographics Workshop, pages 102-120, Maastricht, NL, September 1995. Springer.
 
5
D. A. Hurl:man. A method for the construction of minimum-redundancy codes. Proc. IRE, 40:1098-1101, 1952.
6
 
7
J. Jeuring. Polytypic data compression. Unpublished, 1997.
 
8
M. P. Jones. The implementation of the Gofer functional programming system. Technical Report YALEU/DCS/RR-1030, Department of Computer Science, Yale University, May 1994.
9
 
10
 
11
Simon Peyton Jones, Thomas Nordm, and Alastair Reid. GreenCard: a foreign-language interface for Haskell. In J. Launchbury, editor, 2nd Haskell Workshop, Amsterdam, NL, June 1997.
12
 
13
 
14
Alastair Reid. Malloc pointers and stable pointers: improving Haskell's foreign language interface. In Glasgow Functional Programming Workshop Draft Proceedings, Ayr, Scotland, September 1994.
15
 
16
17
 
18
 
19
 
20
 
21
M. Wallace and C. Runciman. Heap compression and binary I/O in Haskell. In J. Launchbury, editor, 2nd Haskell Workshop, Amsterdam, NL, June 1997.
 
22
D.A. Ziff, S.P. Spackman, and K. Waclena. Funser: a functional server for textual information retrieval. Journal of Functional Programming, 5(3):317-343, July 1995.


Collaborative Colleagues:
Malcolm Wallace: colleagues
Colin Runciman: colleagues