procrastinating-variable: Haskell values that cannot be evaluated immediately.
Procrastinating variables (PVar
s) are meant to be used in cases where
you want to give someone a value that you do not have available yet,
but will definitely have ready by the time that they need to use it.
PVar
s have the advantage that you do not make the user of your value
execute some kind of unwrapping routine in order to get access to the
value within. For example, this is useful when you are constructing
closures that you want to go ahead and construct now even though some
of the values that they contain are not available yet.
PVar
s are implemented with a lazy thunk that reads from
an IORef
; before the IORef
is written to, it contains _|_ (an
exception with a descriptive error message) so that an error is raised
in the user code if the variable is accidently accessed before the
value is ready.
NOTE: PVar
s are modeled closely on the IVar
implementation in
the ivar-simple package. The major difference is that if you
try to read an IVar
before it has been given a value, it blocks
until the value is available, whereas reading from a PVar
before it is ready raises an exception. The reason behind the
different symantics for PVar
is because if the user
accidently accesses the value too early, you want there to be a
lot of noise to let him or her know about it, rather than
merely blocking the thread indefinitely and causing them to
wonder what went wrong.
Downloads
- procrastinating-variable-1.0.2.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] | 1.0, 1.0.1, 1.0.2 |
---|---|
Dependencies | base (>=4 && <5) [details] |
License | BSD-3-Clause |
Author | Gregory Crosswhite |
Maintainer | Gregory Crosswhite <gcross@phys.washington.edu> |
Category | Data |
Home page | http://github.com/gcross/procrastinating-variable |
Uploaded | by GregoryCrosswhite at 2009-06-08T14:35:37Z |
Distributions | |
Reverse Dependencies | 2 direct, 0 indirect [details] |
Downloads | 2445 total (3 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] |