clean up some stack shuffling

db4
Doug Coleman 2009-05-31 08:53:42 -05:00
parent 802283c94c
commit ae75b41a43
1 changed files with 29 additions and 27 deletions

View File

@ -15,18 +15,19 @@ ERROR: cursor-ended cursor ;
dup cursor-done? dup cursor-done?
[ cursor-ended ] [ cursor-get-unsafe ] if ; inline [ cursor-ended ] [ cursor-get-unsafe ] if ; inline
: find-done? ( quot cursor -- ? ) : find-done? ( cursor quot -- ? )
dup cursor-done? [ 2drop t ] [ cursor-get-unsafe swap call ] if ; inline over cursor-done?
[ 2drop t ] [ [ cursor-get-unsafe ] dip call ] if ; inline
: cursor-until ( quot cursor -- ) : cursor-until ( cursor quot -- )
[ find-done? not ] [ find-done? not ]
[ cursor-advance drop ] bi-curry bi-curry while ; inline [ drop cursor-advance ] bi-curry bi-curry while ; inline
: cursor-each ( cursor quot -- ) : cursor-each ( cursor quot -- )
[ f ] compose swap cursor-until ; inline [ f ] compose cursor-until ; inline
: cursor-find ( cursor quot -- obj ? ) : cursor-find ( cursor quot -- obj ? )
swap [ cursor-until ] keep [ cursor-until ] [ drop ] 2bi
dup cursor-done? [ drop f f ] [ cursor-get t ] if ; inline dup cursor-done? [ drop f f ] [ cursor-get t ] if ; inline
: cursor-any? ( cursor quot -- ? ) : cursor-any? ( cursor quot -- ? )
@ -93,7 +94,8 @@ M: to-sequence cursor-write
: transform ( seq quot transformer -- newseq ) : transform ( seq quot transformer -- newseq )
[ [ >input ] [ >output ] bi ] 2dip [ [ >input ] [ >output ] bi ] 2dip
[ call ] [ 2drop freeze ] 3bi ; inline [ call ]
[ 2drop freeze ] 3bi ; inline
: map ( seq quot -- ) [ cursor-map ] transform ; inline : map ( seq quot -- ) [ cursor-map ] transform ; inline
: filter ( seq quot -- newseq ) [ cursor-filter ] transform ; inline : filter ( seq quot -- newseq ) [ cursor-filter ] transform ; inline