sequences.repeating: rename repeating to cycle and add repeat
parent
1a9caec368
commit
f932ca2090
|
@ -1,5 +1,8 @@
|
||||||
USING: sequences.repeating tools.test ;
|
USING: sequences.repeating tools.test ;
|
||||||
IN: sequences.repeating.tests
|
IN: sequences.repeating.tests
|
||||||
|
|
||||||
[ { 1 2 3 1 2 } ] [ { 1 2 3 } 5 repeated ] unit-test
|
[ { 1 2 3 1 2 } ] [ { 1 2 3 } 5 cycle ] unit-test
|
||||||
[ { 1 2 3 1 2 3 1 2 3 } ] [ { 1 2 3 } 9 repeated ] unit-test
|
[ { 1 2 3 1 2 3 1 2 3 } ] [ { 1 2 3 } 9 cycle ] unit-test
|
||||||
|
|
||||||
|
[ { } ] [ { 1 2 3 } 0 repeat ] unit-test
|
||||||
|
[ { 1 1 1 2 2 2 3 3 3 } ] [ { 1 2 3 } 3 repeat ] unit-test
|
||||||
|
|
|
@ -1,21 +1,36 @@
|
||||||
! Copyright (C) 2008 Alex Chapman
|
! Copyright (C) 2008 Alex Chapman
|
||||||
|
! Copyright (C) 2012 John Benediktsson
|
||||||
! See http;//factorcode.org/license.txt for BSD license
|
! See http;//factorcode.org/license.txt for BSD license
|
||||||
USING: accessors circular kernel sequences ;
|
USING: accessors circular kernel math sequences sequences.private ;
|
||||||
IN: sequences.repeating
|
IN: sequences.repeating
|
||||||
|
|
||||||
TUPLE: repeating circular len ;
|
TUPLE: cycles circular length ;
|
||||||
|
|
||||||
: <repeating> ( seq length -- repeating )
|
: <cycles> ( seq length -- cycles )
|
||||||
[ <circular> ] dip repeating boa ;
|
[ <circular> ] dip cycles boa ;
|
||||||
|
|
||||||
: repeated ( seq length -- new-seq )
|
: cycle ( seq length -- new-seq )
|
||||||
dupd <repeating> swap like ;
|
dupd <cycles> swap like ;
|
||||||
|
|
||||||
M: repeating length len>> ;
|
M: cycles length length>> ;
|
||||||
M: repeating set-length len<< ;
|
M: cycles set-length length<< ;
|
||||||
|
|
||||||
M: repeating virtual@ ( n seq -- n' seq' ) circular>> ;
|
M: cycles virtual@ ( n seq -- n' seq' ) circular>> ;
|
||||||
|
|
||||||
M: repeating virtual-exemplar circular>> ;
|
M: cycles virtual-exemplar circular>> ;
|
||||||
|
|
||||||
INSTANCE: repeating virtual-sequence
|
INSTANCE: cycles virtual-sequence
|
||||||
|
|
||||||
|
TUPLE: repeats seq length ;
|
||||||
|
|
||||||
|
: <repeats> ( seq times -- repeats )
|
||||||
|
[ dup length ] dip * repeats boa ;
|
||||||
|
|
||||||
|
: repeat ( seq times -- new-seq )
|
||||||
|
dupd <repeats> swap like ;
|
||||||
|
|
||||||
|
M: repeats length length>> ;
|
||||||
|
|
||||||
|
M: repeats nth-unsafe seq>> [ length /i ] keep nth ;
|
||||||
|
|
||||||
|
INSTANCE: repeats immutable-sequence
|
||||||
|
|
|
@ -7,7 +7,7 @@ MEMO: single-sine-wave ( samples/wave -- seq )
|
||||||
[ iota ] [ pi 2 * swap / [ * sin ] curry ] bi map ;
|
[ iota ] [ pi 2 * swap / [ * sin ] curry ] bi map ;
|
||||||
|
|
||||||
: (sine-wave) ( samples/wave n-samples -- seq )
|
: (sine-wave) ( samples/wave n-samples -- seq )
|
||||||
[ single-sine-wave ] dip <repeating> ;
|
[ single-sine-wave ] dip <cycles> ;
|
||||||
|
|
||||||
: sine-wave ( sample-freq freq seconds -- seq )
|
: sine-wave ( sample-freq freq seconds -- seq )
|
||||||
pick * >integer [ /i ] dip (sine-wave) ;
|
pick * >integer [ /i ] dip (sine-wave) ;
|
||||||
|
|
Loading…
Reference in New Issue