sequences: better "halves".

db4
John Benediktsson 2012-09-04 19:56:10 -07:00
parent b135b956a7
commit 5e0a3c5761
1 changed files with 5 additions and 6 deletions

View File

@ -230,14 +230,12 @@ TUPLE: slice-error from to seq reason ;
<PRIVATE <PRIVATE
: <slice-unsafe> ( from to seq -- slice ) : <slice-unsafe> ( from to seq -- slice )
slice boa ; inline dup slice? [ collapse-slice ] when slice boa ; inline
PRIVATE> PRIVATE>
: <slice> ( from to seq -- slice ) : <slice> ( from to seq -- slice )
check-slice check-slice <slice-unsafe> ; inline
dup slice? [ collapse-slice ] when
<slice-unsafe> ; inline
M: slice virtual-exemplar seq>> ; inline M: slice virtual-exemplar seq>> ; inline
@ -853,13 +851,14 @@ PRIVATE>
] if ; ] if ;
: cut-slice ( seq n -- before-slice after-slice ) : cut-slice ( seq n -- before-slice after-slice )
[ head-slice ] [ tail-slice ] 2bi ; [ head-slice ] [ tail-slice ] 2bi ; inline
: insert-nth ( elt n seq -- seq' ) : insert-nth ( elt n seq -- seq' )
swap cut-slice [ swap suffix ] dip append ; swap cut-slice [ swap suffix ] dip append ;
: halves ( seq -- first-slice second-slice ) : halves ( seq -- first-slice second-slice )
dup midpoint@ cut-slice ; [ 0 swap length [ 2/ dup ] keep ] keep
[ <slice-unsafe> ] curry 2bi@ ; inline
: binary-reduce ( ... seq start quot: ( ... elt1 elt2 -- ... newelt ) -- ... value ) : binary-reduce ( ... seq start quot: ( ... elt1 elt2 -- ... newelt ) -- ... value )
#! We can't use case here since combinators depends on #! We can't use case here since combinators depends on