Version 0.5.4-0 of deepseq-bounded is deprecated.
The latest version of deepseq-bounded is 0.8.0.0-1.

deepseq-bounded

Version 0.5.4 revision 0 uploaded by AndrewSeniuk.

Package meta

Synopsis
Bounded deepseq, including support for generic deriving
Description

This package provides methods for partially (or fully) evaluating data structures ("bounded deep evaluation").

More information is available on the project homepage. There may be activity on this reddit discussion, where your comments are invited.

Quoting comments from the deepseq package:

"Artificial forcing is often used for adding strictness to a program, e.g. in order to force pending exceptions, remove space leaks, or force lazy IO to happen. It is also useful in parallel programs, to ensure work does not migrate to the wrong thread."

Sometimes we don't want to, or cannot, force all the way. Any infinite recursive type is an example. Also, bounded forcing bridges the theoretical axis between shallow seq and full deepseq.

We provide two new classes NFDataN and NFDataP. Instances of these provide bounded deep evaluation for arbitrary polytypic terms:

  • rnfn bounds the forced evaluation by depth of recursion.

  • rnfp forces based on patterns (static or dynamic).

Instances of NFDataN and NFDataP can be automatically derived via Generics.SOP, backed by the GNFDataN and GNFDataP modules.

Another approach is Seqable, which is similar to NFDataN, but optimised for use as a dynamically-reconfigurable forcing harness in the seqaid auto-instrumentation tool.

Recent developments supporting parallelisation control (in Pattern and Seqable modules) may justify renaming this library to something which emcompasses both strictness and parallelism aspects.

Author
Andrew G. Seniuk
Bug reports
Andrew Seniuk <rasfar@gmail.com>
Category
Control
Copyright
n/a
Homepage
http://fremissant.net/deepseq-bounded
Maintainer
Andrew Seniuk <rasfar@gmail.com>
Package URL
n/a
Stability
provisional

Components