diff --git a/basis/circular/circular-tests.factor b/basis/circular/circular-tests.factor index 3a94e14640..b4a9d547f2 100644 --- a/basis/circular/circular-tests.factor +++ b/basis/circular/circular-tests.factor @@ -13,6 +13,7 @@ circular strings ; [ [ 1 2 3 ] ] [ { 1 2 3 } [ ] like ] unit-test [ [ 2 3 1 ] ] [ { 1 2 3 } [ rotate-circular ] keep [ ] like ] unit-test +[ [ 3 1 2 ] ] [ { 1 2 3 } [ rotate-circular ] keep [ rotate-circular ] keep [ ] like ] unit-test [ [ 2 3 1 ] ] [ { 1 2 3 } 1 over change-circular-start [ ] like ] unit-test [ [ 3 1 2 ] ] [ { 1 2 3 } 1 over change-circular-start 1 over change-circular-start [ ] like ] unit-test [ [ 3 1 2 ] ] [ { 1 2 3 } -100 over change-circular-start [ ] like ] unit-test diff --git a/basis/circular/circular.factor b/basis/circular/circular.factor index ae79e70d73..d47b954ecf 100644 --- a/basis/circular/circular.factor +++ b/basis/circular/circular.factor @@ -28,10 +28,10 @@ M: circular virtual-seq seq>> ; circular-wrap (>>start) ; : rotate-circular ( circular -- ) - [ start>> 1 + ] keep circular-wrap (>>start) ; + [ 1 ] dip change-circular-start ; : push-circular ( elt circular -- ) - [ set-first ] [ 1 swap change-circular-start ] bi ; + [ set-first ] [ rotate-circular ] bi ; : ( n -- circular ) 0 ;