diff --git a/extra/cursors/cursors-tests.factor b/extra/cursors/cursors-tests.factor index 158769ff14..d71999ab87 100644 --- a/extra/cursors/cursors-tests.factor +++ b/extra/cursors/cursors-tests.factor @@ -8,6 +8,10 @@ IN: cursors.tests { } make ] unit-test +[ T{ linear-cursor f 3 1 } ] [ + T{ linear-cursor f 1 1 } T{ linear-cursor f 5 1 } [ value>> 3 mod zero? ] -find +] unit-test + [ { 1 3 } ] [ [ T{ linear-cursor f 1 2 } T{ linear-cursor f 5 2 } [ value>> , ] -each ] { } make diff --git a/extra/cursors/cursors.factor b/extra/cursors/cursors.factor index 030e9ab72f..d7fe5fb893 100644 --- a/extra/cursors/cursors.factor +++ b/extra/cursors/cursors.factor @@ -125,6 +125,9 @@ M: end-of-stream cursor-stream-ended? drop t ; inline [ '[ dup _ cursor>= ] ] [ '[ _ keep inc-cursor ] ] bi* until drop ; inline +: -find ( ... begin end quot: ( ... cursor -- ... ? ) -- ... cursor ) + '[ dup _ cursor>= [ t ] [ dup @ ] if ] [ inc-cursor ] until ; inline + : -in- ( quot -- quot' ) '[ cursor-value-unsafe @ ] ; inline