For Style Loops¶
Idio supports a for each style of looping over compound
values. for-each
is a simple wrapper around map
where map
collects results and for-each
doesn’t.
They both take the form, map func list+
, where
func
should take as many arguments as there are lists in
list+
.
define (foo p) {
printf "%s is for %s\n" (ph p) (pht p)
}
data := '((a "apple")
(b "banana"))
for-each foo data
$ idio simple-for
a is for apple
b is for banana
Defining a specific one-shot function is tiresome:
data := '((a "apple")
(b "banana"))
for p in data {
printf "%s is for %s\n" (ph p) (pht p)
}
$ idio simple-for-2
a is for apple
b is for banana
A variation is to walk down each list simultaneously by passing multiple variables as a list, one variable per list:
data := '((a "apple")
(b "banana"))
for (e1 e2) in data {
printf "%s and %s\n" e1 e2
}
$ idio simple-for-3
a and b
apple and banana
Notice that the lists are walked in parallel which is orthogonal to the previous example.
Last built at 2024-10-13T06:11:41Z+0000 from 77077af (dev) for Idio 0.3