combinators.cleave: <arr> and <arr*>
parent
72c62a635f
commit
02758aeadb
|
@ -70,3 +70,29 @@ MACRO: spread ( seq -- )
|
|||
swap
|
||||
[ [ r> ] swap append ] map concat
|
||||
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