Add 3cleave

db4
Slava Pestov 2008-04-01 01:40:12 -05:00
parent ff037a65df
commit 38cb4f13b6
2 changed files with 9 additions and 1 deletions

View File

@ -12,11 +12,17 @@ hashtables sorting ;
[ [ keep ] curry ] map concat [ drop ] append ; [ [ keep ] curry ] map concat [ drop ] append ;
: 2cleave ( x seq -- ) : 2cleave ( x seq -- )
[ [ call ] 3keep drop ] each 2drop ; [ 2keep ] each 2drop ;
: 2cleave>quot ( seq -- quot ) : 2cleave>quot ( seq -- quot )
[ [ 2keep ] curry ] map concat [ 2drop ] append ; [ [ 2keep ] curry ] map concat [ 2drop ] append ;
: 3cleave ( x seq -- )
[ 3keep ] each 3drop ;
: 3cleave>quot ( seq -- quot )
[ [ 3keep ] curry ] map concat [ 3drop ] append ;
: spread>quot ( seq -- quot ) : spread>quot ( seq -- quot )
[ length [ >r ] <repetition> concat ] [ length [ >r ] <repetition> concat ]
[ [ [ r> ] prepend ] map concat ] bi [ [ [ r> ] prepend ] map concat ] bi

View File

@ -43,6 +43,8 @@ IN: inference.transforms
\ 2cleave [ 2cleave>quot ] 1 define-transform \ 2cleave [ 2cleave>quot ] 1 define-transform
\ 3cleave [ 3cleave>quot ] 1 define-transform
\ spread [ spread>quot ] 1 define-transform \ spread [ spread>quot ] 1 define-transform
! Bitfields ! Bitfields