loops: Fast imperative-style loops
loops is a library for fast, imperative-style loops with a clean syntax.
Fast, imperative-style loops with a clean syntax. Bind (
>>=) nests loops, so in
do-notation, each subsequent line is nested inside loops that appear above it.
Iteration over common data structures, like lists and vectors.
Robust performance because there is no reliance on fusion.
NEW! Loop-unrolling to arbitrary depth. Unrollable loop combinators are provided in
Control.Monad.Loop.Unroll. (The simple, "rolled" interface is still provided in
Control.Monad.Loop.) The unrolling depth set at the call site at compile time. My benchmarks show that folding over unrolled loops is up to 25% faster than folding over unboxed vectors!
For best performance, please compile your code with
-O2. You should also
use GHC's LLVM backend if possible; it generally produces faster executables.
[Skip to Readme]
|Versions||0.1.0.0, 0.1.0.1, 0.2.0.0, 0.2.0.1, 0.2.0.2|
|Dependencies||base (>=4.7 && <5), primitive (>=0.5 && <1), transformers (>=0.3 && <1), vector (>=0.10 && <1) [details]|
|Copyright||(c) Thomas Tuegel 2014|
|Revised||Revision 1 made by HerbertValerioRiedel at Wed Sep 2 06:26:44 UTC 2015|
|Source repo||head: git clone https://github.com/ttuegel/loops.git|
|Uploaded||by ThomasTuegel at Fri Jun 13 23:03:55 UTC 2014|
|Downloads||2625 total (18 in the last 30 days)|
|Rating||(no votes yet) [estimated by rule of succession]|
|Status||Docs uploaded by user [build log]
All reported builds failed [all 1 reports]
Hackage Matrix CI
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
For package maintainers and hackage trustees