Skip to content

iteration

pannous edited this page Oct 18, 2026 · 7 revisions

Iteration is often implicit since all functions are automatically broadcasted on lists and pair values:

square number=number*number
square [1 2 3] == [1 4 9]

square [a:1 b:2 c:3] == [a:1 b:4 c:9]

Bare multi-argument application broadcasts: square 1 2 3 is square [1 2 3].

# not yet: shell / path broadcasting (card shell-backtick-run)
delete file = run `rm $file.name`
delete files in ls /

The all keyword takes a block on the left or right making it a functor similar to map: delete all files all files {delete it} all processes start // here start is uncharged code, identical to all processes {it.start}

mathematical signature:

 all :: block `all` iteratable  | `all` iteratable block
 each :: action `each` iteratable  | `each` iteratable action 

Todo: what if the block retuns an iteratable? Ambiguity?

Again broadcasting should make the all keyword superfluous in many situations. The print walks print characters in "hello" and print all characters in "hello" were dropped (decision rust-cleanup-drops); the loop says it:

for c in "hello": print c

Other Iteration see for keyword:

for 1..10 : print it 
for chars in text: print it
for friend in [foe1, friend1, foe2, friend2]: print it 

Interesting: string Iteration Interesting: (structurally) matching for condition

Here we see overlap with the that keyword (not yet in warp — worked in the python Angle implementation):

nums=[1,2,3,4]
print nums that are even

The keywords, functions or functors each any and all are reserved. On lists, each / all as for-like forms run today; English set filters do not yet:

each [1,2,3]: print it
all [1,2,3]: print it
# not yet: `all numbers > 2` as a filtered iteration (card all-filter-iteration)
all numbers > 2: print it

The last example may seem difficult, but it is just the > operator acting on the whole set via broadcasting

Question when and why would for for each for any and for all ever differ?

open questions

Home

Philosophy •

data & code blocks

features

inventions

evaluation

reflection

W0 types, proved

keywords

standard library

use modules & cargo crates, script mode

iteration

switch & pattern matching

warnings & strict

tasks

time & units

html pages

the warp command

examples

todo : bad ideas and open questions

⚠️ specification and progress are out of sync

Clone this wiki locally