name:                loops
version:             0.2.0.2
synopsis:            Fast imperative-style loops
description:
  @loops@ is a library for fast, imperative-style loops with a clean syntax.
  .
  Features
  .
  * 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.
license:             BSD3
license-file:        LICENSE
author:              Thomas Tuegel
maintainer:          ttuegel@gmail.com
bug-reports:         https://github.com/ttuegel/loops/issues
copyright:           (c) Thomas Tuegel 2014
category:            Control
build-type:          Simple
extra-source-files:  README.md, README.lhs
cabal-version:       >=1.10
tested-with:         GHC == 7.8.2

source-repository head
  type: git
  location: https://github.com/ttuegel/loops.git

library
  exposed-modules:
    Control.Monad.Loop
    Control.Monad.Loop.Unroll
    Control.Monad.Loop.ForEach
    Control.Monad.Loop.Internal
  build-depends:
    base >=4.6 && <5,
    primitive >=0.5 && <1,
    transformers >=0.3 && <1,
    vector >=0.10 && <1
  ghc-options: -Wall
  hs-source-dirs: src
  default-language: Haskell2010

test-suite tests
  type: exitcode-stdio-1.0
  hs-source-dirs:
    test
  main-is:
    Test.hs
  other-modules:
    Test.Sum
  build-depends:
    base >=4.6 && <5,
    loops,
    tasty >=0.8 && <1,
    tasty-quickcheck >=0.8 && <1
  ghc-options: -Wall
  default-language: Haskell2010

benchmark benchs
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench
  main-is:
    Bench.hs
  build-depends:
    base >=4.6 && <5,
    criterion >=0.8 && <1,
    loops,
    transformers >=0.3 && <1,
    vector >=0.10 && <1
  ghc-options: -Wall
  default-language: Haskell2010