From f932ca20908e1069e0674daabcdcc854f40918f4 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 10 Jul 2012 16:47:33 -0700 Subject: [PATCH] sequences.repeating: rename repeating to cycle and add repeat --- .../repeating/repeating-tests.factor | 7 +++- extra/sequences/repeating/repeating.factor | 37 +++++++++++++------ extra/synth/synth.factor | 2 +- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/extra/sequences/repeating/repeating-tests.factor b/extra/sequences/repeating/repeating-tests.factor index 15b7ef444b..56139666f5 100644 --- a/extra/sequences/repeating/repeating-tests.factor +++ b/extra/sequences/repeating/repeating-tests.factor @@ -1,5 +1,8 @@ USING: sequences.repeating tools.test ; IN: sequences.repeating.tests -[ { 1 2 3 1 2 } ] [ { 1 2 3 } 5 repeated ] unit-test -[ { 1 2 3 1 2 3 1 2 3 } ] [ { 1 2 3 } 9 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 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 diff --git a/extra/sequences/repeating/repeating.factor b/extra/sequences/repeating/repeating.factor index 4689633b61..20257362e7 100644 --- a/extra/sequences/repeating/repeating.factor +++ b/extra/sequences/repeating/repeating.factor @@ -1,21 +1,36 @@ ! Copyright (C) 2008 Alex Chapman +! Copyright (C) 2012 John Benediktsson ! 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 -TUPLE: repeating circular len ; +TUPLE: cycles circular length ; -: ( seq length -- repeating ) - [ ] dip repeating boa ; +: ( seq length -- cycles ) + [ ] dip cycles boa ; -: repeated ( seq length -- new-seq ) - dupd swap like ; +: cycle ( seq length -- new-seq ) + dupd swap like ; -M: repeating length len>> ; -M: repeating set-length len<< ; +M: cycles length length>> ; +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 ; + +: ( seq times -- repeats ) + [ dup length ] dip * repeats boa ; + +: repeat ( seq times -- new-seq ) + dupd swap like ; + +M: repeats length length>> ; + +M: repeats nth-unsafe seq>> [ length /i ] keep nth ; + +INSTANCE: repeats immutable-sequence diff --git a/extra/synth/synth.factor b/extra/synth/synth.factor index c2b80686f0..1588a8a02a 100755 --- a/extra/synth/synth.factor +++ b/extra/synth/synth.factor @@ -7,7 +7,7 @@ MEMO: single-sine-wave ( samples/wave -- seq ) [ iota ] [ pi 2 * swap / [ * sin ] curry ] bi map ; : (sine-wave) ( samples/wave n-samples -- seq ) - [ single-sine-wave ] dip ; + [ single-sine-wave ] dip ; : sine-wave ( sample-freq freq seconds -- seq ) pick * >integer [ /i ] dip (sine-wave) ; -- 2.34.1