From 1e676eb2b9af7d0a6891cd40c18fcfc9f776726e Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 25 Sep 2007 21:09:46 -0400 Subject: [PATCH] Change check-slice --- core/sequences/sequences.factor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 8d883ddcbb..1a8e5c9561 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -191,14 +191,14 @@ TUPLE: slice from to seq ; TUPLE: slice-error reason ; : slice-error ( str -- * ) \ slice-error construct-boa throw ; -: check-slice ( from to seq -- ) +: check-slice ( from to seq -- from to seq ) pick 0 < [ "start < 0" slice-error ] when - length over < [ "end > sequence" slice-error ] when - > [ "start > end" slice-error ] when ; + dup length pick < [ "end > sequence" slice-error ] when + pick pick > [ "start > end" slice-error ] when ; : ( from to seq -- slice ) dup slice? [ collapse-slice ] when - 3dup check-slice + check-slice slice construct-boa ; M: slice virtual-seq slice-seq ; @@ -259,7 +259,7 @@ INSTANCE: repetition immutable-sequence PRIVATE> : subseq ( from to seq -- subseq ) - [ 3dup check-slice prepare-subseq (copy) ] keep like ; + [ check-slice prepare-subseq (copy) ] keep like ; : head ( seq n -- headseq ) (head) subseq ; @@ -525,7 +525,7 @@ M: sequence <=> ] if ; : delete-slice ( from to seq -- ) - 3dup check-slice >r over >r - r> r> open-slice ; + check-slice >r over >r - r> r> open-slice ; : delete-nth ( n seq -- ) >r dup 1+ r> delete-slice ;