combinators.cleave: <arr> and <arr*>
parent
72c62a635f
commit
02758aeadb
|
@ -70,3 +70,29 @@ MACRO: spread ( seq -- )
|
||||||
swap
|
swap
|
||||||
[ [ r> ] swap append ] map concat
|
[ [ r> ] swap append ] map concat
|
||||||
append ;
|
append ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
! Cleave into array
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
USING: words quotations fry arrays.lib ;
|
||||||
|
|
||||||
|
: >quot ( obj -- quot ) dup word? [ 1quotation ] when ;
|
||||||
|
|
||||||
|
: >quots ( seq -- seq ) [ >quot ] map ;
|
||||||
|
|
||||||
|
MACRO: <arr> ( seq -- )
|
||||||
|
[ >quots ] [ length ] bi
|
||||||
|
'[ , cleave , narray ] ;
|
||||||
|
|
||||||
|
MACRO: <2arr> ( seq -- )
|
||||||
|
[ >quots ] [ length ] bi
|
||||||
|
'[ , 2cleave , narray ] ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
! Spread into array
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
MACRO: <arr*> ( seq -- )
|
||||||
|
[ >quots ] [ length ] bi
|
||||||
|
'[ , spread , narray ] ;
|
||||||
|
|
Loading…
Reference in New Issue