The stream-fusion package

[Tags: bsd3, library]

This package provides the standard Haskell list library reimplemented to allow stream fusion. This should in general provide faster list operations, and faster code for list-heavy programs. See the paper Stream Fusion: From Lists to Streams to Nothing at All, Coutts, Leshchinskiy and Stewart, 2007. To use, simply import Data.List.Stream in place of Data.List, and hide list functions from the Prelude.


[Skip to ReadMe]

Properties

Versions0.1, 0.1.1, 0.1.2, 0.1.2.1, 0.1.2.2, 0.1.2.3, 0.1.2.4, 0.1.2.5
Change logNone available
Dependenciesbase (>=3 && <5) [details]
LicenseBSD3
AuthorDuncan Coutts, Don Stewart
Maintainerduncan.coutts@worc.ox.ac.uk, dons00@gmail.com
Stabilityexperimental
CategoryData
Home pagehttp://www.cse.unsw.edu.au/~dons/streams.html
UploadedSun May 22 18:57:44 UTC 2011 by DonaldStewart
DistributionsNixOS:0.1.2.5
Downloads2085 total (91 in last 30 days)
Votes
0 []
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for stream-fusion-0.1.2.3

                          Stream fusible lists

Faster lists using stream fusion.

The abstract from the paper:

    This paper presents an automatic deforestation system, \emph{stream
    fusion}, based on equational transformations, that fuses a wider
    range of functions than existing short-cut fusion systems. In
    particular, stream fusion is able to fuse zips, left folds and
    functions over nested lists, including list comprehensions. A
    distinguishing feature of the framework is its simplicity: by
    transforming list functions to expose their structure, intermediate
    values are eliminated by general purpose compiler optimisations.

    We have reimplemented the Haskell standard List library on top of
    our framework, providing stream fusion for Haskell lists. By
    allowing a wider range of functions to fuse, we see an increase in
    the number of occurrences of fusion in typical Haskell programs. We
    present benchmarks documenting time and space improvements.

Building:

  $ runhaskell Setup.lhs configure --prefix=/home/dons
  $ runhaskell Setup.lhs build
  $ runhaskell Setup.lhs install

Use:

  import Data.List.Stream

and use as you would for normal lists.
Compile with ghc -O2 for best results.