M: cycles set-length length<< ;
-M: cycles virtual@ ( n seq -- n' seq' ) circular>> ;
+M: cycles virtual@ circular>> ;
M: cycles virtual-exemplar circular>> ;
TUPLE: repeats
{ seq sequence read-only }
-{ length integer read-only } ;
+{ times integer read-only } ;
-: <repeats> ( seq times -- repeats )
- over length * repeats boa ;
+C: <repeats> repeats
-: repeat ( seq times -- new-seq )
- dupd <repeats> swap like ;
+M: repeats length [ seq>> length ] [ times>> ] bi * ;
-M: repeats length length>> ;
+M: repeats virtual@ [ times>> /i ] [ seq>> ] bi ;
-M: repeats nth-unsafe
- [ length>> / ] [ seq>> [ length * >integer ] keep nth ] bi ;
+M: repeats virtual-exemplar seq>> ;
INSTANCE: repeats immutable-sequence
+
+INSTANCE: repeats virtual-sequence
+
+: repeat ( seq times -- new-seq )
+ dupd <repeats> swap like ;