\ : bounds ( addr len -- addr+len addr ) over + swap ;
\ from Wil Baden's toolbelt
\ sometimes "bounds" is called "range"
: foreach ( 'f addr count -- )
cells bounds do
I @ over execute
cell +loop drop ;
: .cells ( addr n -- )
['] . rot rot foreach ;
create data 1 , 2 , 3 , 4 ,
data 4 .cells \ 1 2 3 4
\ where : f ( n -- m )
: map ( 'f addr count -- )
cells bounds do
I @ over execute I !
cell +loop drop ;
' negate data 4 map
data 4 .cells \ -1 -2 -3 -4
\ where : f ( st n -- st' )
: zip ( st 'f addr count -- st' )
cells bounds do
I @ swap dup >r execute r>
cell +loop drop ;
0 ' + data 4 zip . \ -10