2007-11-14 18:32:06 -05:00
|
|
|
|
2008-03-29 05:07:06 -04:00
|
|
|
USING: kernel sequences macros combinators ;
|
2007-11-14 18:32:06 -05:00
|
|
|
|
|
|
|
IN: combinators.cleave
|
|
|
|
|
2008-03-14 14:59:17 -04:00
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
! 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 ] ;
|