From 2d13cecc22175dd3fec703f1e64118fe7e1a6b73 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 16 Feb 2018 08:25:57 -0800 Subject: [PATCH] sequences.extras: fix evens/odds to not cache length. --- extra/sequences/extras/extras.factor | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index d1fbe0e853..adfcf15d93 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -382,26 +382,32 @@ PRIVATE> : 2map-index ( ... seq1 seq2 quot: ( ... elt1 elt2 index -- ... newelt ) -- ... newseq ) pick [ (2each-index) ] dip map-integers ; inline -TUPLE: evens seq length ; +TUPLE: evens { seq read-only } ; -: ( seq -- evens ) - dup length 1 + 2/ evens boa ; inline +C: evens -M: evens length length>> ; inline +M: evens length seq>> length 1 + 2/ ; inline M: evens nth-unsafe [ 2 * ] [ seq>> nth-unsafe ] bi* ; inline +M: evens like seq>> like ; + +M: evens new-sequence seq>> new-sequence ; + INSTANCE: evens immutable-sequence -TUPLE: odds seq length ; +TUPLE: odds { seq read-only } ; -: ( seq -- odds ) - dup length 2/ odds boa ; inline +C: odds -M: odds length length>> ; inline +M: odds length seq>> length 2/ ; inline M: odds nth-unsafe [ 2 * 1 + ] [ seq>> nth-unsafe ] bi* ; inline +M: odds like seq>> like ; + +M: odds new-sequence seq>> new-sequence ; + INSTANCE: odds immutable-sequence : until-empty ( seq quot -- ) -- 2.34.1