aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/all.hff10
-rw-r--r--src/main.cff2
-rw-r--r--src/vec.hff2
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 }
}
}