WARNING: this project has been retired. For a Rust-based alternative, see crunchy.
Unroll for-loops at compile-time.
var total: int
unroll for i in 1..3:
total += i
The above generates the following code (check with expandMacros
)
var total: int
block:
total += 1
block:
total += 2
block:
total += 3
(The usage of block
s ensure variables never "leak".)
Note: currently, we have two serious known bugs, one regarding variable definitions in the loop body (see #1), and one about nested loops (see #2). I expect to solve them some time soon.
unrolled supports Nim 1.0.0+ and can be installed using Nimble:
$ nimble install unrolled
- Unrolled.jl (Julia)