]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/sequences/repeating/repeating.factor
Optimized minimum and maximum for cycles and element-repeats
[factor.git] / extra / sequences / repeating / repeating.factor
index 71c0c5f7c9751a74807cc38798a409feb3d2e78e..b2eb049cfdeb1f8c18f0d47116c8ddcc93148c33 100644 (file)
@@ -1,5 +1,6 @@
 ! Copyright (C) 2008 Alex Chapman
 ! Copyright (C) 2012 John Benediktsson
+! Copyright (C) 2023 nomennescio
 ! See https://factorcode.org/license.txt for BSD license
 USING: accessors circular kernel math sequences ;
 IN: sequences.repeating
@@ -27,6 +28,15 @@ M: cycles virtual-exemplar circular>> ;
 
 INSTANCE: cycles virtual-sequence
 
+<PRIVATE
+
+: full-cycle? ( cycle -- ? ) [ length>> ] [ circular>> length ] bi >= ; inline
+
+PRIVATE>
+
+M: cycles minimum dup full-cycle? [ circular>> minimum ] [ (minimum) ] if ; inline
+M: cycles maximum dup full-cycle? [ circular>> maximum ] [ (maximum) ] if ; inline
+
 TUPLE: element-repeats < sequence-view
 { times integer read-only } ;