phasechange: Freezing, thawing, and copy elision
This library provides a class for types which present the same underlying data in both an immutable (frozen) as well as a mutable (thawed) form, and various functions to manipulate them. Some of the functions allow for copy elision.
Instances are provided for the array types from the primitive
, array
, and vector
packages, but this is mainly for completeness: there is
nothing these instances do which vector
doesn't already do better. The main purpose, rather, is to assist new types, for instance types whose implementation relies on destructive-update foreign imports, and cases when writing a full stream fusion framework isn't practical.
There are three modules:
- Data.PhaseChange
- This module exports the class without its methods, together with functions which guarantee referential transparency (provided that instances are well-behaved). This is the module you should normally import to work with PhaseChangeable data.
- Data.PhaseChange.Unsafe
- This module exports functions which can break referential transparency if they are used improperly. Be careful.
- Data.PhaseChange.Impl
- This module exports the class along with its methods. Import it if you want to define a new instance.
Downloads
- phasechange-0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.1 |
---|---|
Dependencies | array (>=0.4 && <0.5), base (>=4.4 && <4.6), ghc-prim, monad-st (>=0.2 && <0.3), primitive (>=0.4 && <0.5), vector (>=0.9 && <0.10) [details] |
License | BSD-3-Clause |
Copyright | Copyright (C) 2012 Gábor Lehel |
Author | Gábor Lehel |
Maintainer | Gábor Lehel <illissius@gmail.com> |
Category | Data |
Home page | http://github.com/glehel/phasechange |
Source repo | head: git clone git://github.com/glehel/phasechange.git |
Uploaded | by GaborLehel at 2012-06-30T14:58:12Z |
Distributions | |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Downloads | 1239 total (1 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |