diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/all.hff | 10 | ||||
| -rw-r--r-- | src/main.cff | 2 | ||||
| -rw-r--r-- | src/vec.hff | 2 |
3 files changed, 12 insertions, 2 deletions
diff --git a/src/all.hff b/src/all.hff index e8298b0..13051c6 100644 --- a/src/all.hff +++ b/src/all.hff @@ -16,6 +16,16 @@ defmacro assert { ] } +defmacro foreach(x, i, a, ...body) [ + { + let $a = a; + for let i = 0; i < $a.#len; ++i { + let x = $a[i]; + { body } + } + } +] + /// Types struct Type; diff --git a/src/main.cff b/src/main.cff index 4315ce1..9280443 100644 --- a/src/main.cff +++ b/src/main.cff @@ -12,7 +12,7 @@ extern fn main(argc int, argv **u8) int { for let i = 1; i < argc; ++i { args->push(argv[i]); } - vec_each(s, i, args, + foreach(s, i, args->compact(), printf("%d: %s\n", i, s); ) } diff --git a/src/vec.hff b/src/vec.hff index fb44196..9099b85 100644 --- a/src/vec.hff +++ b/src/vec.hff @@ -39,7 +39,7 @@ defmacro vec_each(x, i, v, ...body) [ { let $v = v; for let i = 0; i < $v.len; ++i { - let x = v.dat[i]; + let x = $v.dat[i]; { body } } } |