| Safe Haskell | Safe-Inferred |
|---|
Control.Loop
Description
Provides a convenient and fast alternative to the common
forM_ [1..n] idiom, which in many cases GHC cannot fuse to efficient
code.
Notes on fast iteration:
- For
Int,(+1)is almost twice as fast assuccbecausesuccdoes an overflow check. - For
Int, you can get around that while still usingEnumusingtoEnum . (+ 1) . fromEnum. - However,
toEnum . (+ 1) . fromEnumis slower thansuccforWord32on 64-bit machines sincetoEnumhas to check if the givenIntexceeds 32 bits. - Using
(+1)fromNumis always the fastest way, but it gives no overflow checking. - Using
forLoopyou can flexibly pick the way of increasing the value that best fits your needs. - The currently recommended replacement for
forM_ [1..n]isforLoop 1 (<= n) (+1).