Change check-slice

release
Slava Pestov 2007-09-25 21:09:46 -04:00
parent 9b1dbbd436
commit 1e676eb2b9
1 changed files with 6 additions and 6 deletions

View File

@ -191,14 +191,14 @@ TUPLE: slice from to seq ;
TUPLE: slice-error reason ; TUPLE: slice-error reason ;
: slice-error ( str -- * ) \ slice-error construct-boa throw ; : 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 pick 0 < [ "start < 0" slice-error ] when
length over < [ "end > sequence" slice-error ] when dup length pick < [ "end > sequence" slice-error ] when
> [ "start > end" slice-error ] when ; pick pick > [ "start > end" slice-error ] when ;
: <slice> ( from to seq -- slice ) : <slice> ( from to seq -- slice )
dup slice? [ collapse-slice ] when dup slice? [ collapse-slice ] when
3dup check-slice check-slice
slice construct-boa ; slice construct-boa ;
M: slice virtual-seq slice-seq ; M: slice virtual-seq slice-seq ;
@ -259,7 +259,7 @@ INSTANCE: repetition immutable-sequence
PRIVATE> PRIVATE>
: subseq ( from to seq -- subseq ) : 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 ; : head ( seq n -- headseq ) (head) subseq ;
@ -525,7 +525,7 @@ M: sequence <=>
] if ; ] if ;
: delete-slice ( from to seq -- ) : 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 -- ) : delete-nth ( n seq -- )
>r dup 1+ r> delete-slice ; >r dup 1+ r> delete-slice ;